-3

我在 sql management studio 中使用过这个查询并且它有效,我尝试了一个没有and条件的缩短查询并且它有效,为什么and条件会破坏代码?

string dbQuery = "update log_file set updated = @true where urn = @urn and companyid = @companyid";
cmd.Parameters.Add(new SqlParameter("@urn", SqlDbType.Int)).Value = urn;
cmd.Parameters.Add(new SqlParameter("@companyid", SqlDbType.Int)).Value = companyid;
cmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = 0;

cmd.CommandText = (dbQuery);
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
4

2 回答 2

2

如果and companyid = @companyid导致它不起作用(并且我假设您的意思是更新没有发生而不是收到错误消息,那么唯一的解释是您传递的 companyid 不正确。可能您在 Management Studio 中的测试正在使用您认为它应该具有的值,而不是它实际具有的值。

您应该在调试会话中确认所有参数都正确,然后找出不正确的原因。

于 2012-09-05T11:53:17.790 回答
1

将 Bit 类型替换为 false

cmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = false;

如果要使用 0 作为值,请将类型参数替换为 Int

于 2012-09-05T11:53:41.120 回答