C# OLEDB命令,更新
具有一个访问表(CustomerTable)和两个字段(CustomerID、CustomerName):C# OLEDB命令,更新,c#,oledb,C#,Oledb,具有一个访问表(CustomerTable)和两个字段(CustomerID、CustomerName): 不更改CompanyName字段 OleDbCommand不支持命名参数 从 OLE DB.NET提供程序不支持用于传递的命名参数 由调用的SQL语句或存储过程的参数 OleDbCommand当CommandType设置为Text时。在这种情况下 必须使用问号(?)占位符。例如: 从CustomerID=?的客户中选择* 因此,OleDbParameter对象添加到 OleDbParame
不更改CompanyName字段
OleDbCommand
不支持命名参数
从
OLE DB.NET提供程序不支持用于传递的命名参数
由调用的SQL语句或存储过程的参数
OleDbCommand
当CommandType
设置为Text
时。在这种情况下
必须使用问号(?)占位符。例如:
从CustomerID=?的客户中选择*
因此,OleDbParameter
对象添加到
OleDbParameterCollection
必须直接对应于
命令文本中参数的问号占位符
实际上,使用?
不是必须的,但它是一个命令
还可用于处置数据库连接和对象
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();
}
Ole Db参数是位置参数,未命名。至少当JET按该顺序引用
@p2
和@p1
时,将引用您添加的第一个参数,然后是第二个参数。IIRC JET有一些准命名参数支持,其中引用@p2
,@p1
,@p2
将引用第一个、第二个和第一个参数(因此,尽管它们是位置参数,但有点像每个参数名称的第一个实例用于确定位置)。TL;DR不要使用JET或ACE。
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();
}