DBConcurrency-Ausnahmefehler beim Aktualisieren mit Dataadapter
Ich versuche zu bearbeitenDataTable
Befüllt vonNpgsqlDataAdapter
. Nach dem Aufruf vonFill()
Methode, ich habe nur eine Zeile inDataTable
. Dann habe ich nur den Wert einer Spalte geändert und versucht, wie unten beschrieben zu aktualisieren.
Dann erhalte ich diesen Fehler:
DBConcurrencyException occured
Mein Code ist:
NpgsqlDataAdapter getAllData = new NpgsqlDataAdapter("SELECT sn,
code,product, unitprice, quantity, InvoiceNo, Date FROM stocktable WHERE Code='" + product + "'
ORDER BY EDate ASC", DatabaseConnectionpg);
DataTable ds1 = new DataTable();
ds1.Clear();
getAllData.Fill(ds1);
if (ds1.Rows.Count > 0)
{
ds1.Rows[0]["Quantity"] = qty;// calculated value
}
ds1 = ds1.GetChanges();
NpgsqlCommandBuilder cb = new NpgsqlCommandBuilder(getAllData);
//getAllData.RowUpdating += (sender2, e2) => { e2.Command.Parameters.Clear(); };
//cb.SetAllValues = false;
getAllData.DeleteCommand = cb.GetDeleteCommand();
getAllData.InsertCommand = cb.GetInsertCommand();
getAllData.UpdateCommand = cb.GetUpdateCommand();
int x = getAllData.Update(ds1);
if (x > 0)
{
ds1.AcceptChanges();
}
BEARBEITEN Ich habe drei Felder als Primärschlüssel und rufe nur zwei Felder in der select-Anweisung auf. Ist es ein Grund fürDBConcurrency
Error? Ich kann die Tabelle jedoch mit denselben Parametern (drei Felder als Primärschlüssel) in SQL Server 2005 aktualisieren.
AKTUALISIEREN
Ich habe die Lösung gefunden und die Lösung wurde erstellt und mit dem zweiten DataAdapter aktualisiert. Ich benutzte getAllData (NpgSqlDataAdapter) So füllen Sie die Tabelle als
NpgsqlDataAdapter getAllData = new NpgsqlDataAdapter("SELECT
code,product, unitprice, quantity, InvoiceNo, Date FROM stocktable WHERE Code='" + product + "'
ORDER BY EDate ASC", DatabaseConnectionpg);
Und Außerdem wird der nächste Adapter erstellt, der als @ aktualisiert werden sol
NpgsqlDataAdapter updateadap= new NpgsqlDataAdapter("SELECT sn, quantity FROM stocktable WHERE Code='" + product + "'
ORDER BY EDate ASC", DatabaseConnectionpg);
NpgsqlCommandBuilder cb = new NpgsqlCommandBuilder(updateadap);
//getAllData.RowUpdating += (sender2, e2) => { e2.Command.Parameters.Clear(); };
//cb.SetAllValues = false;
updateadap.DeleteCommand = cb.GetDeleteCommand();
updateadap.InsertCommand = cb.GetInsertCommand();
updateadap.UpdateCommand = cb.GetUpdateCommand();
int x = updateadap.Update(ds1);
if (x > 0)
{
......
}
Ich habe viel versucht und festgestellt, dass NpgsqlDataAdapter ein Problem mit Column @ haCod. Als ich es ablegte, funktionierte es. Der Datentyp des Spaltencodes ist varchar. Ich weiß nicht, warum das passiert ist. Hat jemand eine Ahnung davon?