Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的访问数据库将不会更新。代码中没有错误_C#_Ms Access_Oledbcommand - Fatal编程技术网

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谢谢,我将它添加到了答案中。