Ich bin Tring die Insert, Update zum Hinzufügen und Löschen von Befehlen an einen MySqlDataAdapter, die die Daten hinzugefügt, um es mit dem Befehl hat:MySqlDataAdapter Update-Tabelle, die Inner Join verwendet
//iec211.4521studenti
string lv_sObsTable = "`" + mv_sDatabase + "`.`" + mv_sGroup + "observatii`";
string lv_sStudTable = "`" + mv_sDatabase + "`.`" + mv_sGroup + "studenti'";
string lv_sObservatiiCommand = "SELECT o.idObservatie, o.idStudent, s.nume, o.observatie, o.lastUpdate FROM " + lv_sObsTable + " o INNER JOIN " + lv_sStudTable + " s USING (idStudent) ORDER BY s.nume ASC";
mv_dtAdapterObservatii = new MySqlDataAdapter(lv_sObservatiiCommand, mv_sqlConnection);
mv_dtAdapterObservatii.Fill(mv_dsTables, lv_sCurrentTable);
Ich habe für eine serched beantworten, und ich habe zwei mögliche Lösungen für UPDATE gefunden, aber beide geben Sie mir einen Fehler:
string lv_sObsTB = "`" + mv_sDatabase + "`.`" + mv_sGroup + "observatii`";
string lv_sStudTB = "`" + mv_sDatabase + "`.`" + mv_sGroup + "studenti`";
//VERSION 1
string lv_sCommand = "UPDATE o SET [email protected], [email protected] FROM " + lv_sObsTB + " AS o INNER JOIN " + lv_sStudTB + " s ON o.idStudent=s.idStudent ";
MySqlCommand lv_sqlCommand = new MySqlCommand(lv_sCommand);
lv_sqlCommand.Parameters.Add("@idStudent", MySqlDbType.Int16, 10, "idStudent");
lv_sqlCommand.Parameters.Add("@observatie", MySqlDbType.VarChar, 255, "observatie");
mv_dtAdapterObservatii.UpdateCommand = lv_sqlCommand;
//VERSION 2
string lv_sCommand = "UPDATE " + lv_sObsTB + " SET " + "[email protected]" + lv_sStudTB + ".idStudent, [email protected] WHERE [email protected] AND " + lv_sObsTB + ".idStudent IN (SELECT " + lv_sStudTB + ".idStudent FROM " + lv_sStudTB + ")";
MySqlCommand lv_sqlCommand = new MySqlCommand(lv_sCommand);
lv_sqlCommand.Parameters.Add("@" + lv_sStudTB + ".idStudent", MySqlDbType.Int16, 10, "idStudent");
lv_sqlCommand.Parameters.Add("@observatie", MySqlDbType.VarChar, 255, "observatie");
lv_sqlCommand.Parameters.Add("@idObservatie", MySqlDbType.Int16, 10, "idObservatie");
mv_dtAdapterObservatii.UpdateCommand = lv_sqlCommand;
die Fehlermeldung für die erste Version lautet: „Sie haben einen Fehler in der SQL-Syntax, kontrollieren das Handbuch das entspricht Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'FROM iec211
. 4521observatii
ASS o INNERER ANSCHLUSS iec211
. 4521studenti
s ON o.id 'at line 1 "
Die Fehlermeldung für die zweite Version lautet: Sie haben einen Fehler in Ihrer SQL-Syntax, überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe entspricht '. 4521studenti'.idStudenti, observatie='test' WHERE idObservatie=1 AND
iec211 .
' bei Zeile 1 "
Ich kann nicht die MySQL-Befehle in Kombination mit MySqlCommand und MySqlDataAdapter verwenden.
Bis jetzt habe ich den folgenden Befehl verwendet, um Daten für meine Tabelle zu erhalten:
string lv_sObservatiiCommand = "SELECT * FROM `" + mv_sDatabase + "`.`" + mv_sGroup + "observatii` ORDER BY idStudent ASC";
mv_dtAdapterObservatii = new MySqlDataAdapter(lv_sObservatiiCommand, mv_sqlConnection);
mv_dtAdapterObservatii.Fill(mv_dsTables, lv_sCurrentTable);
In Kombination mit MySqlCommandBuilder den Update-Befehl und die Parameter zu erhalten, die es zu setted benötigt:
lv_sqlCommandBuilder = new MySqlCommandBuilder(mv_dtAdapterObservatii);
mv_dtAdapterObservatii.UpdateCommand = lv_sqlCommandBuilder.GetUpdateCommand();
Kann mir bitte jemand erklären, wie man die Befehle zum Einfügen, Aktualisieren und Löschen eines MySqlDataAdapter, der einen INNER JOIN zwischen zwei Tabellen enthält, korrekt hinzufügt?
Ich weiß, dass jede Tabelle in einem anderen Datenadapter sein muss, und sie sind. Die Tabelle "4521studenti" befindet sich in "mv_dtAdapterStudenti", die nicht im obigen Code enthalten ist.
Vielen Dank für die Hilfe und ich hoffe, dies wird nicht als eine schlechte Post betrachtet werden. :)