-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(エラーメッセージが表示されるのではなく、更新が行われなかったことを意味していると思います)、唯一の説明は、渡した会社IDが正しくないことです。ManagementStudioでのテストで使用されている可能性があります。実際に行う値ではなく、持つべきだと思う値。

デバッグセッションですべてのパラメータが正しいことを確認してから、正しくない場合はどうしてかを考えてください。

于 2012-09-05T11:53:17.790 に答える
1

ビットタイプをfalseに置き換えます

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

値として0を使用する場合は、typeパラメーターをIntに置き換えます

于 2012-09-05T11:53:41.120 に答える