OleDbCommand,更新

bhs*_*s67 2 c# oledb

使用Access表(CustomersTable)和两个字段(CustomerID,CustomerName):

command.CommandText = "UPDATE CustomersTable   SET CompanyName =  @p2   WHERE CompanyName =  @p1";
command.Parameters.Clear();
command.Parameters.Add("@p1", OleDbType.VarChar).Value = "xyz3";
command.Parameters.Add("@p2", OleDbType.VarChar).Value = "xyz4";
command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

不会更改CompanyName字段.

Son*_*nül 8

OleDbCommand 不支持命名参数.

来自OleDbCommand.Parameters物业

OLE DB .NET提供程序不支持将参数传递给SQL语句或由OleDbCommandwhen CommandType设置为调用的存储过程的命名参数 Text.在这种情况下,必须使用问号(?)占位符.例如:

SELECT*FROM Customers WHERE CustomerID =?

因此,OleDbParameter对象添加到的对象 OleDbParameterCollection 必须直接对应于命令文本中参数的问号占位符的位置.

实际上,使用?不是必须的,但它是一个指挥官.

还使用usingstatement来处理数据库连接和对象.

using(OleDbConnection con = new OleDbConnection(conString))
using(OleDbCommand command = con.CreateCommand())
{
    command.CommandText = "UPDATE CustomersTable SET CompanyName = ? WHERE CompanyName = ?";
    command.Parameters.Add("@p1", OleDbType.VarChar).Value = "xyz3";
    command.Parameters.Add("@p2", OleDbType.VarChar).Value = "xyz4";
    con.Open();
    command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)