ADO - Die Daten werden nicht gespeichert
-
Ich versuche Daten in eine DB zuschreiben.Der folgende Code wird auch ohne Fehlermeldungen ausgeführt,aber wenn ich in der Tabelle nachsehen ist der Datensatz nicht drin.
TestDataSetTableAdapters.TestTableAdapter adapter = new TestDataSetTableAdapters.TestTableAdapter(); TestDataSet data = new TestDataSet(); adapter.Fill(data.Test); data.Test.AddTest(Guid.NewGuid() , "Test", 12345); adapter.Update(data);
-
Versuch's mal mit der GetChanges-Methode
data.GetChanges()
Evtl. musst du fuer die DB auch noch ein Update-Anweisung erstellen
(zB mit dem CommandBuilder).
-
Das Studio hat die Update Anweisung schon gefüllt und es klappt auch nicht wenn ich
adapter.Insert(Guid.NewGuid(),"Test",12345);
verwendet,als kann es eigentlich nicht am Dataset liegen.
-
Bei mir hat das so nie gefunkt. Allerdings bei .Net 1.1. Bei dem neuen hatte ich noch keine Gelegenheit zu testen.
Ich musste die Aenderungen mit GetChanges immer in ein neues DataSet uebertragen,
dann CommandBuilder, ...Schau dir mal diese Topics an, vlt. findest du darin was
http://www.c-plusplus.net/forum/viewtopic-var-t-is-104770-and-highlight-is-.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-71875-and-highlight-is-.html
-
Jetzt habe ich mir das SQl-Command selber zusammen gebastellt aber es funktioniert immer noch nicht
public Test() { try { db.Open(); SqlCommand insert = new SqlCommand("INSERT INTO Test (ID, Name,Wert) VALUES (@ID,@Name,@Wert)", db); insert.Parameters.Add(GetParameter("ID", System.Data.DbType.Guid, System.Data.SqlDbType.UniqueIdentifier, Guid.NewGuid())); insert.Parameters.Add(GetParameter("Name", System.Data.DbType.String, System.Data.SqlDbType.Text, "Test")); insert.Parameters.Add(GetParameter("Wert", System.Data.DbType.Double, System.Data.SqlDbType.Float, 12345)); insert.ExecuteNonQuery(); db.Close(); } catch (SqlException exception) { System.Windows.Forms.MessageBox.Show(exception.Message); } finally { db.Close(); } } private SqlParameter GetParameter(string name, System.Data.DbType type,System.Data.SqlDbType sql_type, object value) { SqlParameter r = new SqlParameter(); r.Value = value; r.DbType = type; r.SqlDbType = sql_type; r.ParameterName = name; return r; }
-
Muss evtl. nur noch die Direction des Parameters gesetzt werden?
-
Das hat leider nicht geholfen.
-
Ich komme mir jetzt ein bisschen blöd vor.Es hat doch funktioniert,bloss hat das Visual Studio die Datenbank jedesmal überschreiben wen ich im Debug neugestartet habe.
-
Du musst das Datenbank-Fenster auch wieder schliessen und neu öffnen. Visual Studio überschreibt von alleine nichts, ausser du gibst selber was ein.
-
Das Studio hat die Datenbankdatei beim Neustart aus den Projektverzeichnis ins Debugverzeichnis kopiert
-
Das Studio macht das immer so damit du dir deine Datenbank nicht zerschießt.
Es geht davon aus, das du mit Echt-Daten und nicht mit Test-Daten arbeitest!