具有访问表(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();
不会更改CompanyName字段。
最佳答案
OleDbCommand
不支持命名参数。
来自OleDbCommand.Parameters
property
OLE DB .NET提供程序不支持用于传递的命名参数
SQL语句或存储过程调用的参数的参数
OleDbCommand
设置为CommandType
时的Text
。在这种情况下,
必须使用问号(?)占位符。例如:
在客户ID =?的情况下从客户中选择*
因此,将OleDbParameter
对象添加到
OleDbParameterCollection
必须直接对应于
命令文本中参数的问号占位符。
实际上,不一定必须使用?
,但这是一个逗号。
还可以使用using
statement处置数据库连接和对象。
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();
}