我在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();
答案 0 :(得分:2)
如果and companyid = @companyid
导致它不起作用(我认为你的意思是更新没有发生而不是收到错误信息,那么唯一的解释就是你要传递的公司名称不是&#39 ; t。正确。您在Management Studio中的测试可能正在使用您认为应该拥有的值,而不是它实际执行的值。
您应该确认调试会话中的所有参数都是正确的,然后找出原因,如果它们不是。
答案 1 :(得分:1)
对于位类型
,替换为falsecmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = false;
如果要使用0作为值,请将int参数替换为Int