C# 如何更新C和SQL Server中的值?
这是我的程序,它应该在一个包含3列的表中更新分数:id、昵称、scor Otherform.id1是需要更新的用户的id,它取自登录表单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
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()