C# 我的访问数据库将不会更新。代码中没有错误
我正在使用以下代码更新数据库:C# 我的访问数据库将不会更新。代码中没有错误,c#,ms-access,oledbcommand,C#,Ms Access,Oledbcommand,我正在使用以下代码更新数据库: var connectionString=ConfigurationManager.ConnectionStrings[“MyDatabase”].connectionString; string commandString=string.Empty; 使用(OleDbConnection con=新OleDbConnection(connectionString)) { con.Open(); OleDbCommand命令=新的OleDbCommand(comm
var connectionString=ConfigurationManager.ConnectionStrings[“MyDatabase”].connectionString;
string commandString=string.Empty;
使用(OleDbConnection con=新OleDbConnection(connectionString))
{
con.Open();
OleDbCommand命令=新的OleDbCommand(commandString,con);
commandString=“UPDATE accesscontrol SET enabled=@isEnabled,其中proxyFor=@userNameInGrid和currentlyLoggedOnUser=@userName”;
command.Parameters.AddWithValue(“userName”,Environment.userName);
command.Parameters.AddWithValue(“isEnabled”,tempPerson.isBool.ToString());
command.Parameters.AddWithValue(“userNameInGrid”,tempPerson.Name);
command.ExecuteNonQuery();
command.Parameters.Clear();
}
因为您使用的是空的commandString
首先,设置:
string commandString = string.Empty;
然后将空的commandString
传递给OleDbCommand
,然后将值设置为变量commandString
,而不是OleDbCommand
OleDbCommand command = new OleDbCommand(commandString, con);
commandString = "UPDATE accesscontrol SET enabled=@isEnabled WHERE proxyFor=@userNameInGrid AND currentlyLoggedOnUser=@userName";
将代码更改为:
commandString = "UPDATE accesscontrol SET enabled=@isEnabled WHERE proxyFor=@userNameInGrid AND currentlyLoggedOnUser=@userName";
OleDbCommand command = new OleDbCommand(commandString, con);
更新
此外,还应在参数名称之前添加@
command.Parameters.AddWithValue("@isEnabled", tempPerson.isBool.ToString());
command.Parameters.AddWithValue("@userNameInGrid", tempPerson.Name);
command.Parameters.AddWithValue("@userName", Environment.UserName);
注意:正如@LarsTech提到的,OleDB没有正确使用命名参数。必须按照它们在SQL语句中出现的相同索引顺序添加参数,因为您使用的是空的
commandString
首先,设置:
string commandString = string.Empty;
然后将空的commandString
传递给OleDbCommand
,然后将值设置为变量commandString
,而不是OleDbCommand
OleDbCommand command = new OleDbCommand(commandString, con);
commandString = "UPDATE accesscontrol SET enabled=@isEnabled WHERE proxyFor=@userNameInGrid AND currentlyLoggedOnUser=@userName";
将代码更改为:
commandString = "UPDATE accesscontrol SET enabled=@isEnabled WHERE proxyFor=@userNameInGrid AND currentlyLoggedOnUser=@userName";
OleDbCommand command = new OleDbCommand(commandString, con);
更新
此外,还应在参数名称之前添加@
command.Parameters.AddWithValue("@isEnabled", tempPerson.isBool.ToString());
command.Parameters.AddWithValue("@userNameInGrid", tempPerson.Name);
command.Parameters.AddWithValue("@userName", Environment.UserName);
注意:正如@LarsTech提到的,OleDB没有正确使用命名参数。必须按照SQL语句中显示的相同索引顺序添加参数@softwareisfun有什么消息吗?有帮助吗?OleDB没有正确使用命名参数。参数必须按照它们在SQL语句中出现的相同索引顺序添加,因此
@isEnabled
应该是第一个,等等@LarsTech谢谢,我把它添加到了答案中。@softwareismoun有什么消息吗?有帮助吗?OleDB没有正确使用命名参数。参数必须按照它们在SQL语句中出现的相同索引顺序添加,因此@isEnabled
应该是第一个,等等@LarsTech谢谢,我将它添加到了答案中。