Hi,
folgendes Problem. Ich habe einen Code (folgt unten) in dem ich ein Dataset befülle, dieses Dataset an ein DataGrid hänge und nach einer Änderung das Dataset wieder in die DB zurückschreiben will.
Dazu bediene ich mich der SQLParameter. Das Update soll später mal über 2 Tabellen gehen, deshalb muss ich mir das UpdateCommand des Adapters selber zusammenstellen.
Nun mal der Code:
Was ist nun mein Problem!
Wenn ich mithilfe der SQLPArameter das Update durchführe geht das das die ersten 3 mal nicht, und nach dem 3ten mal genau so wie es gehen sollte
(Ja genau .... )
Wenn ich allerdings den in der Methode dgvUserView_CellValueChanged auskommentierten Code verwende, also die Parameter gegen ein einfaches String.Format ersetzte funktioniert alles einwandfrei .....
Natürlich könnte ich es so lassen, aber eigentlich wollte ich halt die Parameter verwenden wegen der Prüfung auf den SQLType bzw. auch der sichereren Eingabe der Werte.
Hat wer eine Idee was ich da falsch mache?
PS: Sollten noch weitere Daten benötigt werden, einfach fragen
lg
folgendes Problem. Ich habe einen Code (folgt unten) in dem ich ein Dataset befülle, dieses Dataset an ein DataGrid hänge und nach einer Änderung das Dataset wieder in die DB zurückschreiben will.
Dazu bediene ich mich der SQLParameter. Das Update soll später mal über 2 Tabellen gehen, deshalb muss ich mir das UpdateCommand des Adapters selber zusammenstellen.
Nun mal der Code:
Code:
private void tabBenutzerverwaltung_Enter(object sender, EventArgs e) { SqlConnection thisConnection = new SqlConnection(Parser._ConnectionString.ConnectionString); SqlCommand thisCommand = thisConnection.CreateCommand(); ds = new DataSet(); thisCommand.CommandText = "SELECT * FROM BENUTZER";//, PERSONEN WHERE Benutzer.PersID = Personen.PersID"; Adapter = new SqlDataAdapter(thisCommand); //string Update = "UPDATE Benutzer SET Benutzername = 'BADO',AgbBestaetigt = 'True',Gesperrt = 'False',LetzterLogin = '' WHERE BenutzerID = 1"; string Update = "UPDATE Benutzer SET Benutzername = @col1,AgbBestaetigt = @col3,Gesperrt = @col4,LetzterLogin = @col5 WHERE BenutzerID = @col6"; SqlCommand command = new SqlCommand(Update, thisConnection); command.Parameters.Add("col1", SqlDbType.VarChar, 510, "Benutzername") ; command.Parameters.Add("col3", SqlDbType.Bit, 1, "AgbBestaetigt"); command.Parameters.Add("col4", SqlDbType.Bit, 1, "Gesperrt"); command.Parameters.Add("col5", SqlDbType.DateTime, 8, "LetzterLogin"); command.Parameters.Add("col6", SqlDbType.Int, 4, "BenutzerID"); command.Parameters[0].SourceVersion = DataRowVersion.Current; command.Parameters[1].SourceVersion = DataRowVersion.Current; command.Parameters[2].SourceVersion = DataRowVersion.Current; command.Parameters[3].SourceVersion = DataRowVersion.Current; command.Parameters[4].SourceVersion = DataRowVersion.Original; Adapter.UpdateCommand = command; Adapter.Fill(ds,"Result"); dgvUserView.DataSource = ds.Tables["Result"]; dgvUserView.Columns["BenutzerID"].Visible = false; dgvUserView.Columns["PersID"].Visible = false; //dgvUserView.Columns["PersID1"].Visible = false; foreach (DataRow item in ds.Tables[0].Rows) { if (item["Kennwort"] != DBNull.Value) item["Kennwort"] = "[HASH]"; } dgvUserView.Update(); } private void dgvUserView_CellValueChanged(object sender, DataGridViewCellEventArgs e) { //string Update = string.Format("UPDATE Benutzer SET Benutzername = '{0}',AgbBestaetigt = '{1}',Gesperrt = '{2}',LetzterLogin = '{3}' WHERE BenutzerID = {4}", // ds.Tables["Result"].Rows[e.RowIndex]["Benutzername"].ToString(), // ds.Tables["Result"].Rows[e.RowIndex]["AgbBestaetigt"].ToString(), // ds.Tables["Result"].Rows[e.RowIndex]["Gesperrt"].ToString(), // ds.Tables["Result"].Rows[e.RowIndex]["LetzterLogin"].ToString(), // ds.Tables["Result"].Rows[e.RowIndex]["BenutzerID"].ToString()); //SqlCommand command = new SqlCommand(Update, new SqlConnection(Parser._ConnectionString.ConnectionString)); //Adapter.UpdateCommand = command; MessageBox.Show(Adapter.Update(ds,"Result").ToString()); foreach (DataColumn item in ds.Tables[0].Columns) { Console.WriteLine(ds.Tables[0].Rows[e.RowIndex][item].ToString()); } }
Was ist nun mein Problem!
Wenn ich mithilfe der SQLPArameter das Update durchführe geht das das die ersten 3 mal nicht, und nach dem 3ten mal genau so wie es gehen sollte
(Ja genau .... )
Wenn ich allerdings den in der Methode dgvUserView_CellValueChanged auskommentierten Code verwende, also die Parameter gegen ein einfaches String.Format ersetzte funktioniert alles einwandfrei .....
Natürlich könnte ich es so lassen, aber eigentlich wollte ich halt die Parameter verwenden wegen der Prüfung auf den SQLType bzw. auch der sichereren Eingabe der Werte.
Hat wer eine Idee was ich da falsch mache?
PS: Sollten noch weitere Daten benötigt werden, einfach fragen
lg
Comment