Ich versuche, eine Access-Datenbank über meine C# -Webanwendung zu aktualisieren, aber ich bin derzeit ein Problem in WHERE-Anweisung nicht die Datensätze aktualisieren und keine Fehler zurück.C# OleDB Update-Anweisung nicht aktualisieren
Ich versuche ein Textfeld zu aktualisieren und die Bedingung in meiner WHERE-Anweisung ist eine ganze Zahl.
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = @Title WHERE ID = @ID");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", param2);
ich sogar versucht, es zu tun auf diese Weise
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = ? WHERE ID = ?");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("?", TextBox1.Text);
cmd.Parameters.AddWithValue("?", param2);
Aber es ist die Aktualisierung noch nicht!
Was ich herausgefunden habe, als ich versuchte, es zu reparieren, ist, dass, wenn ich den ersten Parameter durch eine Zeichenkette zwischen einfachen Anführungszeichen (siehe unten) ersetze, die Tabelle tatsächlich aktualisiert.
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = 'test' WHERE ID = @ID");
Hat einer von euch eine Idee, warum passiert das?
Edit: Dies ist der vollständige Code
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = @Title WHERE ID = @ID");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", param2);
conn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
Edit 2:
Dies ist mein Code nach dem Versuch, die Datentypen zu setzen, ist es immer noch nicht funktioniert.
Um in meiner Access-Datenbank-ID zu klären ist „Autowert“ und Titel ist „Langtext“
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = ? WHERE ID = ?");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("Title", TextBox1.Text).OleDbType = OleDbType.VarChar;
cmd.Parameters.AddWithValue("ID", param2).OleDbType = OleDbType.Integer;
conn.Open();
try
{
var recordsUpdated = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
Wenn ich den Wert von recordsUpdated überprüfen, es gibt „1“, aber die Datenbank wird nicht aktualisiert werden.
Sind Sie in einer Transaktion, die rückgängig gemacht wird? – yaakov