P
Ich habe mir jetzt mal die drei Sachen angesehen. Dann habe ich den Code ausgebaut:
void VerbindungHerstellen() {
OleDb::OleDbConnectionStringBuilder^ stringBuilder = gcnew OleDb::OleDbConnectionStringBuilder();
stringBuilder->DataSource = "F:\\Visual Studio 2005\\Projects\\Datenbank\\db1.mdb";
stringBuilder->Provider = "Microsoft.Jet.OLEDB.4.0";
OleDb::OleDbConnection^ conn = gcnew OleDb::OleDbConnection(stringBuilder->ConnectionString);
try {
conn->Open();
} catch (String ^s) {
System::Windows::Forms::MessageBox::Show(s);
}
OleDb::OleDbCommand^ selectCommand = gcnew OleDb::OleDbCommand();
selectCommand->CommandText = L"SELECT NameIndex FROM Tabelle1 " +
"WHERE Name = ? AND Vorname = ?";
selectCommand->Connection = conn;
selectCommand->Parameters->Add("Name", OleDb::OleDbType::VarWChar, 15);
selectCommand->Parameters->Add("Vorname", OleDb::OleDbType::VarWChar, 15);
OleDb::OleDbCommand^ insertCommand = gcnew OleDb::OleDbCommand();
insertCommand->CommandText = L"INSERT INTO `Tabelle1` (`Name`, `Vorname`) VALUES (\?, \?)";
insertCommand->Connection = conn;
insertCommand->Parameters->Add("Name", OleDb::OleDbType::VarWChar, 15, "Name");
insertCommand->Parameters->Add("Vorname", OleDb::OleDbType::VarWChar, 15, "Vorname");
OleDb::OleDbCommand^ deleteCommand = gcnew OleDb::OleDbCommand();
deleteCommand->CommandText = L"DELETE * FROM `Tabelle1` WHERE Name = ? AND Vorname = ?";
deleteCommand->Connection = conn;
deleteCommand->Parameters->Add("Name", OleDb::OleDbType::VarWChar, 15, "Name");
deleteCommand->Parameters->Add("Vorname", OleDb::OleDbType::VarWChar, 15, "Vorname")->SourceVersion= DataRowVersion::Original;
OleDb::OleDbCommand^ updateCommand = gcnew OleDb::OleDbCommand();
updateCommand->CommandText = L"UPDATE `Tabelle1` SET Name = ?, Vorname = ? " +
"WHERE NameIndex = ?";
updateCommand->Connection = conn;
updateCommand->Parameters->Add("Name", OleDb::OleDbType::VarWChar, 15, "Name");
updateCommand->Parameters->Add("Vorname", OleDb::OleDbType::VarWChar, 15, "Vorname")->SourceVersion= DataRowVersion::Original;
OleDb::OleDbDataAdapter^ adapter = gcnew OleDb::OleDbDataAdapter();
adapter->SelectCommand = selectCommand;
adapter->InsertCommand = insertCommand;
adapter->DeleteCommand = deleteCommand;
adapter->UpdateCommand = updateCommand;
DataSet^ dataSetBuf = gcnew DataSet();
adapter->Fill(dataSetBuf);
DataView^ dataViewBuf = gcnew DataView();
conn->Close();
}
Aber bei adapter->Fill bekomme ich immer Folgende Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: Parameter?_1 hat keinen Standardwert.
Muss man bei DataSet etwas weiteres Einstellen?
Wie kann ich DataView mit DataSet verbinden?
Welche bedeutung haben die Parameter bei den Commands. Sind diese in Ordnung?
Meine Access-Datenbank sieht folgendermaßen aus:
NameIndex | Name | Vorname
___________________________
||_____
NameIndex ist der Primärschlüssel und ist vom Typ "AutoWert".
Name und Vorname sind vom Typ "Text" mit der Feldgröße von 50.
Die Tabelle heißt "Tabelle1"