我有一个包含两列的SQL Server表。
想要用新的重置所有值
我确实尝试过使用update命令,但是我得到了无法将字符串转换为int错误。
我想更新所有列
我将如何实现这一目标?
答案 0 :(得分:0)
如果您想将值设置为0
,则必须将值设置为0
:
UPDATE [People] SET [Number] = @nm WHERE [Name] = @Name
在您的代码中,@nm
包含0,因此上述查询应该有效。
我认为实际问题是你试图通过一次比较匹配所有行。那不行。您必须从选择中创建in
,如下所示:
UPDATE [People] SET [Number] = @nm WHERE [Name] in (@Name1, @Name2, @Name3)
将名称作为单独的参数传递。
答案 1 :(得分:0)
要将所有条目设置为0,您只需删除WHERE
子句,然后将Number设置为0.
UPDATE [People] SET [Number] = 0
如果你想使用一个参数(虽然硬编码没有多大意义),你可以这样做..
UPDATE [People] SET [Number] = @nm
虽然我认为在设置参数时会发生您收到的异常。尝试将@nm
设置为int,而不是字符串...(注意0附近缺少引号)
cmd.Parameters.Add("@nm", SqlDbType.Int).Value = 0;
一起没有参数...
SqlConnection con = new SqlConnection(@"Data Source=
(LocalDB)\MSSQLLocalDB;AttachDbFilename=
C:\WpfApplication\Database.mdf;Integrated Security=True");
con.ConnectionString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "UPDATE [People] SET [Number] = 0";
cmd.Connection = con;
cmd.ExecuteNonQuery();
或使用参数..
SqlConnection con = new SqlConnection(@"Data Source=
(LocalDB)\MSSQLLocalDB;AttachDbFilename=
C:\WpfApplication\Database.mdf;Integrated Security=True");
con.ConnectionString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "UPDATE [People] SET [Number] = @nm";
cmd.Parameters.Add("@nm", SqlDbType.Int).Value = 0;
cmd.Connection = con;
cmd.ExecuteNonQuery();