0

DB に主キーである ID 列があり、その値をそれ自体でインクリメントします。しかし、次のような asp.net ado.net クラスに挿入クエリがあります。

cmd = new SqlCommand("insert into Images(Name,[Image]) VALUES ('Nature',@img)", conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = TextBox1.Text;
cmd.Parameters.Add("@img", SqlDbType.Image).Value = img;
cmd.ExecuteNonQuery();

ただし、null にすることはできないという例外がスローされます。

私の考え/目標は、上記の2つの値のみを挿入したいだけで、主キー列はDB内で内部的に増加する必要があるということです。私はDBでそれを設定しました。ただし、このエラーを処理する方法や、このコードを微調整する方法がわかりません。助けてください

4

2 に答える 2

0

クエリで @Name パラメータを指定していないと思いますが、パラメータで値を送信しています。

「Nature」の値を削除して、@Name を入力してください。

cmd = new SqlCommand("insert into Images(Name,[Image]) VALUES (@Name ,@img)", conn); cmd.CommandType = CommandType.Text; 
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = TextBox1.Text; 
cmd.Parameters.Add("@img", SqlDbType.Image).Value = img; 
cmd.ExecuteNonQuery(); 
于 2012-08-25T13:49:19.513 に答える
0

テーブルの列が ID 列であることを確認してIDください。Images

例えば:

CREATE TABLE Images(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](100) NOT NULL,
    [Image] [image] NOT NULL)

そうである場合は、コードをステップ実行して、使用しているパラメーターが null でないことを確認してください。 TextBox1.Textimg

最後に、テーブルに null 非許容の列が他にないことを確認します。

于 2012-08-25T13:45:23.260 に答える