C# 如何更新C和SQL Server中的值?

C# 如何更新C和SQL Server中的值?,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,这是我的程序,它应该在一个包含3列的表中更新分数:id、昵称、scor Otherform.id1是需要更新的用户的id,它取自登录表单 void update() { SqlConnection c = new SqlConnection(co); c.Open(); string up1 = "Update Scoruri Set Scor='" + Convert.ToInt32(scor1) + "' where ID

这是我的程序,它应该在一个包含3列的表中更新分数:id、昵称、scor

Otherform.id1是需要更新的用户的id,它取自登录表单

void update()
{
        SqlConnection c = new SqlConnection(co);
        c.Open();          

        string up1 = "Update Scoruri Set Scor='" + Convert.ToInt32(scor1) + "' where ID='" + otherForm.id1 + ";'";
        //z.Parameters.AddWithValue("@y", scor1);
        SqlCommand comm = new SqlCommand(up1, c);
        comm.ExecuteNonQuery();          
        string up2= "'Update Scoruri Set scor='" +Convert.ToInt32(scor2) + "' where ID='" + otherForm.id2 + "';'";
        SqlCommand h = new SqlCommand(up1, c);
        h.ExecuteNonQuery();            
        c.Close();
}

您没有确切地说出错误,但我在代码中看到了一些错误

你应该经常使用。这种类型的字符串连接对攻击是开放的。 我假设您的Scor和ID列是数字,而不是字符。这就是为什么不应该使用单引号的原因。对于参数化查询,您不必担心这一点。 用于处置SqlConnection和SQLN命令。 在第二个SqlCommand(即h)中,您执行的是第一个命令up1,而不是第二个命令up2。 例如,

void Update()
{
  using(SqlConnection c = new SqlConnection(co))
  using(SqlCommand comm = c.CreateCommand())
  {
     string up1 = "Update Scoruri Set Scor=@scor where ID=@id";
     comm.CommandText = up1;
     comm.Parameters.AddWithValue("@scor", Convert.ToInt32(scor1));
     comm.Parameters.AddWithValue("@id", otherForm.id1);
     c.Open();  
     comm.ExecuteNonQuery(); 
     comm.Parameters.Clear();
     comm.Parameters.AddWithValue("@scor", Convert.ToInt32(scor2));
     comm.Parameters.AddWithValue("@id", otherForm.id2);   
     comm.ExecuteNonQuery();       
  }
}

试试这个。。。使用字符串格式。

有什么问题?什么不起作用?你有错误吗?请不要这样做。Format不能阻止SQL注入。这个OLEDB命令来自哪里?为什么要执行两次命令?请根据常识。很抱歉,我现在在c里很粗鲁。我的代码不会更新表中的分数。一切都很顺利,只是什么都没做。我不知道如何使用using语句,但我做了你说的其他事情,但仍然不起作用。好吧,我做了所有这些,但都不起作用。我有一个selectsql命令来选择初始分数,起初我认为这可能是错误的,但是如果我做一个显示分数的messagebox,它会显示我想要的值。它只是不更新well@user3401766我举一个例子。试试看。然后首先调试代码。查看您的所有值是否正常。首先在ManagementStudio中尝试更新命令。查看Convert.ToInt32scor1和otherForm.id1的值。看看它们是否是有效的数值。好的,我是这样写的,表中所有的值都是int32,列都是int类型。一切都很好。这可能是服务器或数据库设置的问题吗?它仍然没有更新数据库score@user3401766添加参数值后调试代码时,您的命令是什么样子的?
string up1 = string.Format(@"UPDATE Scoruri SET Scor = {0} WHERE `id` = '{1}'", Convert.ToInt32(scor1), otherForm.id1);
        cmd = New OleDbCommand(up1, co);
        cmd.ExecuteNonQuery();
        cmd.ExecuteNonQuery()