Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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#_Sql - Fatal编程技术网

C# 从列表中更新数据库中的列

C# 从列表中更新数据库中的列,c#,sql,C#,Sql,我试图从列表中更新数据库中的一列 command = new SqlCommand("update Login_Users set Password=@a where UserName !='" + null + "'", Db); Db.Open(); for (int i = 0; i < list.Count; i++) { list[i] = Encrypt(list[i]); command.Parameters.AddWithValue("@

我试图从列表中更新数据库中的一列

command = new SqlCommand("update Login_Users set Password=@a  where UserName !='" + null + "'", Db);
Db.Open();
for (int i = 0; i < list.Count; i++)
{
    list[i] = Encrypt(list[i]);         
    command.Parameters.AddWithValue("@a",list[i]);                    
    int a = command.ExecuteNonQuery();
}
command=newsqlcommand(“更新登录名”\u用户设置密码=@a where UserName!='“+null+”,Db);
Db.Open();
for(int i=0;i
但我得到了这个错误:

变量名已声明


您的命令只有一个参数,但您正试图通过每个循环添加一个新参数(通过
AddWithValue
…AddWithValue)

命令
声明放入循环(如下所示),或使用其他方法之一更新值

Db.Open();
for (int i = 0; i < list.Count; i++)
{
   command = new SqlCommand("update Login_Users set Password=@a  where UserName !='" + null + "'", Db);
   list[i] = Encrypt(list[i]);
   command.Parameters.AddWithValue("@a",list[i]);
   int a = command.ExecuteNonQuery();
}
Db.Open();
for(int i=0;i
我认为更具可读性的是:

其中用户名!=''

其中用户名为“”


您已经使用包含参数
@a
的SQL语句设置了SqlCommand。通过该设置,您可以在将参数
@a
设置为不同的值后,通过
ExecuteQuery
多次调用该命令

for
循环中,语句
command.Parameters.AddWithValue()
可能会向命令中添加其他参数,但没有两个参数可以具有相同的值,因此如果循环执行多次,您将收到收到的错误

您的SQL语句似乎正在根据您的列表多次将登录用户中所有记录的密码设置为某个加密值。如果我理解正确,这可能会满足您的要求:

var command = new SqlCommand("update Login_Users set Password=@a  where UserName !='" + null + "'", Db);
Db.Open();
command.Parameters.Add(new SqlParameter("@a",null));

for (int i = 0; i < list.Count; i++)
{
    cmd.Parameters["@a"].Value = Encrypt(list[i]);
    int a = command.ExecuteNonQuery();
}
var command=new SqlCommand(“更新登录名”\u用户设置密码=@a where UserName!='“+null+”,Db);
Db.Open();
Add(新的SqlParameter(“@a”,null));
for(int i=0;i

祝你好运!

@SonerGönül这不是一个替代方案吗?如果你每次迭代都创建一个新的
命令,那么就没有必要清除它了?不是用
命令=新的SqlCommand…
它将是一个新的命令对象,其中包含一个空的
参数集array而不是=@a,但它不起作用。所以你试图传递多个可能的密码?事实上,看看你的代码,不清楚你想做什么-sql说重置所有密码,为什么你需要对该命令应用循环?只有最后一个会有任何效果。我建议问一个新问题和链接在这篇文章的评论中,我对它进行了评论。