更新查询是不是更新数据库中的记录?

时间:2014-01-13 09:49:09

标签: c#

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");                
}

这是我更新数据库中的数据的代码,但它没有更新任何内容......为什么它不起作用?

2 个答案:

答案 0 :(得分:2)

不要使用命名参数,使用?代替。

MSDN:

  

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