Hallo zusammen!
Ich habe das Problem, das bei meiner Datenbankanwendung zwar alle meine Änderungen im DataSet übernommen werden ( ich sehe sie wenn ich mir den Inhalt des DataSet angucke), aber sie kommen nicht in der Datenbank an.
Ich weiss das ich die Update() Methode des DataAdapters aufrufen muss ( und vorher die AcceptChanges() des DataSets). Desweiteren hat mein Adapter Insert und Update Commands ( selbstgemacht, nicht mit dem Commandbuilder).
Aber egal wie mein Insert Command aussieht, nix kommt in der DB an.
Deshalb, bevor ich den Code poste, die eher allgemeine Frage:
Gebe ich einem DataAdapter immer ein SQL-Command mit Parametern, die dann sofort auch spezifieziere ( also welche Typ, welche Tabelle etc...), aber niemals selber mit Werten belege? Der DataAdapter erkennt doch beim Aufruf der Update Methode doch von alleine, welche Einträge sich geändert haben, und nur die werden dann geändert.
Setzt er dann von sich aus die Werte in die Parameter-Platzhalter im SQL Command?
Eigentlich hab ich schon "alles" versucht. Den SQL String per Konkatenation mit den Variablen selbst "zusammenstecken", die Parameter da übergeben wo die entsprechenden Werte bekannt sind, oder halt keine Parameter übergeben. Nix funzt.
Vorab: Ich schreib in C# eine Anwendung mit einer Access DB.
hier die Initialisierung meines DataAdapters:
P.S.: Ja ich bin ein ziemlicher Anfänger und hab gleichzeitig recht viel Druck das mein Programm endlich läuft
Code:
projekteAdapter = new OdbcDataAdapter();
OdbcCommand insProjekte = new OdbcCommand();
insProjekte.Connection = myConnection;
insProjekte.CommandText = "INSERT INTO Projekte ([BV_Name], [BV_Nr]) VALUES (?,?)";
insProjekte.Parameters.Add("[BV_Name]", OdbcType.Text, 50); insProjekte.Parameters.Add("[BV_Nr]", OdbcType.Text, 50);
OdbcCommand updProjekte = new OdbcCommand();
updProjekte.Connection = myConnection;
updProjekte.CommandText = "UPDATE Projekte SET [BV_Name] = ?, [BV_Nr] = ? ";
insProjekte.Parameters.Add("[BV_Name]", OdbcType.Text, 50);
insProjekte.Parameters.Add("[BV_Nr]", OdbcType.Text, 50);
und hier der Aufruf der Update-Methode:
Code:
myDataSet.AcceptChanges();
erGOPausen2.MainInstance._ProjekteAdapter.InsertCo mmand.Parameters["[BV_Name]"].Value = bv_Name;
erGOPausen2.MainInstance._ProjekteAdapter.InsertCo mmand.Parameters["[BV_Nr]"].Value = bv_Nr;
erGOPausen2.MainInstance._ProjekteAdapter.Update(m yDataSet, "Projekte");
wie gesagt, diese Belegung der Parameter ist eine von vielen Versuchen, die ich hinter mir habe.
Und ich bekomme keine Fehlermeldung...
Es kommt einfach nix in der DB an...
Bin für jede Hilfe SEHR dankbar!!
Ich habe das Problem, das bei meiner Datenbankanwendung zwar alle meine Änderungen im DataSet übernommen werden ( ich sehe sie wenn ich mir den Inhalt des DataSet angucke), aber sie kommen nicht in der Datenbank an.
Ich weiss das ich die Update() Methode des DataAdapters aufrufen muss ( und vorher die AcceptChanges() des DataSets). Desweiteren hat mein Adapter Insert und Update Commands ( selbstgemacht, nicht mit dem Commandbuilder).
Aber egal wie mein Insert Command aussieht, nix kommt in der DB an.
Deshalb, bevor ich den Code poste, die eher allgemeine Frage:
Gebe ich einem DataAdapter immer ein SQL-Command mit Parametern, die dann sofort auch spezifieziere ( also welche Typ, welche Tabelle etc...), aber niemals selber mit Werten belege? Der DataAdapter erkennt doch beim Aufruf der Update Methode doch von alleine, welche Einträge sich geändert haben, und nur die werden dann geändert.
Setzt er dann von sich aus die Werte in die Parameter-Platzhalter im SQL Command?
Eigentlich hab ich schon "alles" versucht. Den SQL String per Konkatenation mit den Variablen selbst "zusammenstecken", die Parameter da übergeben wo die entsprechenden Werte bekannt sind, oder halt keine Parameter übergeben. Nix funzt.
Vorab: Ich schreib in C# eine Anwendung mit einer Access DB.
hier die Initialisierung meines DataAdapters:
P.S.: Ja ich bin ein ziemlicher Anfänger und hab gleichzeitig recht viel Druck das mein Programm endlich läuft
Code:
projekteAdapter = new OdbcDataAdapter();
OdbcCommand insProjekte = new OdbcCommand();
insProjekte.Connection = myConnection;
insProjekte.CommandText = "INSERT INTO Projekte ([BV_Name], [BV_Nr]) VALUES (?,?)";
insProjekte.Parameters.Add("[BV_Name]", OdbcType.Text, 50); insProjekte.Parameters.Add("[BV_Nr]", OdbcType.Text, 50);
OdbcCommand updProjekte = new OdbcCommand();
updProjekte.Connection = myConnection;
updProjekte.CommandText = "UPDATE Projekte SET [BV_Name] = ?, [BV_Nr] = ? ";
insProjekte.Parameters.Add("[BV_Name]", OdbcType.Text, 50);
insProjekte.Parameters.Add("[BV_Nr]", OdbcType.Text, 50);
und hier der Aufruf der Update-Methode:
Code:
myDataSet.AcceptChanges();
erGOPausen2.MainInstance._ProjekteAdapter.InsertCo mmand.Parameters["[BV_Name]"].Value = bv_Name;
erGOPausen2.MainInstance._ProjekteAdapter.InsertCo mmand.Parameters["[BV_Nr]"].Value = bv_Nr;
erGOPausen2.MainInstance._ProjekteAdapter.Update(m yDataSet, "Projekte");
wie gesagt, diese Belegung der Parameter ist eine von vielen Versuchen, die ich hinter mir habe.
Und ich bekomme keine Fehlermeldung...
Es kommt einfach nix in der DB an...
Bin für jede Hilfe SEHR dankbar!!
Comment