C# SQL,更新,其中id,代码正确无错误,但未更新
我有一个数据库 我喜欢使用文本框中的输入更新我的表“Personen”。 当我点击一个按钮时,它说它已更新。但当我查询数据库时,它不会更新 这是我的密码C# SQL,更新,其中id,代码正确无错误,但未更新,c#,sql,update-statement,C#,Sql,Update Statement,我有一个数据库 我喜欢使用文本框中的输入更新我的表“Personen”。 当我点击一个按钮时,它说它已更新。但当我查询数据库时,它不会更新 这是我的密码 private void button1_Click(object sender, EventArgs e) { string sqlIns = @"UPDATE Personen SET Voornaam=@VN, Tussenvoegsel=@TN, Achternaam=@AN WHERE (ID=@ID) ;";
private void button1_Click(object sender, EventArgs e)
{
string sqlIns = @"UPDATE Personen SET Voornaam=@VN, Tussenvoegsel=@TN, Achternaam=@AN WHERE (ID=@ID) ;";
//Maak commando object
OleDbCommand command = new OleDbCommand(sqlIns, Connectie);
command.Parameters.AddWithValue("@ID", Convert.ToInt32(TextBoxVerwijderen.Text));
command.Parameters.AddWithValue("@VN", Convert.ToString(textBox1.Text));
command.Parameters.AddWithValue("@TN", Convert.ToString(textBox2.Text));
command.Parameters.AddWithValue("@AN", Convert.ToString(textBox3.Text));
Connectie.Close();
try
{
//Open de connectie
Connectie.Open();
//Voer commando uit
command.ExecuteReader();
Connectie.Close();
//Meldingen succes op het scherm
LabelSucces.Text = "Persoon is succesvol Geupdate " + sqlIns;
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message + ex.StackTrace, "Exception details");
}
finally
{
//Sluiten van de connectie
Connectie.Close();
}
}
你好。
Alex使用
命令。ExecuteNonQuery()代码>
代替命令.ExecuteReader()代码>
使用这样的查询
command.Parameters.AddWithValue("ID", Convert.ToInt32(TextBoxVerwijderen.Text));
command.Parameters.AddWithValue("VN", Convert.ToString(textBox1.Text));
command.Parameters.AddWithValue("TN", Convert.ToString(textBox2.Text));
command.Parameters.AddWithValue("AN", Convert.ToString(textBox3.Text));
看来这就是问题所在。卸下它并尝试在开始时打开连接,在结束时关闭连接。不要在之间执行任何操作。在连接字符串中传递什么?您是否遇到任何异常?OleDbConnection Connectie=new-OleDbConnection(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\Users\Alex\Desktop\visual\u studio1\test.accdb;Persist Security Info=False”);这是工作100%,不,我没有任何例外。是的,它现在正在更新,我有一个问题,当我更新它,ID是去的地方Voornaam,而不是ID我想更新的新值。你也可以帮我吗?好的,那么接受这个答案,然后我也用新的方式更新了我的ans。如果你用这种方式工作,试着找出你的第一种方法有什么问题。我强烈反对只从文本框中获取字符串,您可以查找SQL注入。从这个意义上讲,原始的基于参数的方法要好得多。请尝试检查ID参数,可能您传递的值不正确,还可以检查count
ExecuteNonQuery()
返回的值是否满足(ID=@ID)的要求?
Connectie.Close();