private void btnUpdate_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(constr);
con.Open();
OleDbCommand cmd = new OleDbCommand("Update tb1 set rollno=@rollno WHERE name=@Name", con);
cmd.Parameters.AddWithValue("@Name", txtproject_name.Text);
cmd.Parameters.AddWithValue("@rollno", textroll.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Updated sucessfully");
}
这是我更新数据库中的数据的代码,但它没有更新任何内容......为什么它不起作用?
答案 0 :(得分:2)
不要使用命名参数,使用?代替。
OLE DB .NET提供程序不支持传递的命名参数 SQL语句或由a调用的存储过程的参数 CommandType设置为Text时的OleDbCommand。在这种情况下, 必须使用问号(?)占位符。例如:
SELECT * FROM Customers WHERE CustomerID =?
因此,将OleDbParameter对象添加到的顺序 OleDbParameterCollection必须直接对应于的位置 命令文本中参数的问号占位符。
答案 1 :(得分:0)
您使用的是哪个数据库服务器?服务器更改时存在差异传递参数,例如
SQL Server - @Name
MySql - @Name
Oracle - :名称
等
如果您使用MS Access,请按以下方式使用
private void btnUpdate_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(constr);
con.Open();
OleDbCommand cmd = new OleDbCommand("Update tb1 set rollno=? WHERE name=?", con);
cmd.Parameters.AddWithValue("rollno", textroll.Text);
cmd.Parameters.AddWithValue("name", txtproject_name.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Updated sucessfully");
}
更多参考 http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access