2

私はここで夢中になっています。誰かがこのコードの何が問題なのか教えてください。

con.Open();
cmd = new SqlCommand("INSERT INTO COUNTERS(COUNTER_START, COUNTER_CURRENT, COUNTER_NEXT, COUNTER_TYPE, COUNTER_DATE_CREATED, COUNTER_TIME_CREATED, COUNTER_CREATED_BY) " +
                    "VALUES(@counter_start, @counter_current, @counter_next, @counter_type, @date, @time, @user)", con);

cmd.Parameters.Add("@counter_start", SqlDbType.Int).Value = counter_start.Text;
cmd.Parameters.Add("@counter_current", SqlDbType.Int).Value = counter_current.Text;
cmd.Parameters.Add("@counter_next", SqlDbType.Int).Value = counter_next.Text;
cmd.Parameters.Add("@counter_type", SqlDbType.VarChar, 10).Value = counter_type.Text;
cmd.Parameters.Add("@date", SqlDbType.VarChar, 20).Value = date;
cmd.Parameters.Add("@time", SqlDbType.VarChar, 20).Value = time;
cmd.Parameters.Add("@user", SqlDbType.VarChar, 50).Value = user;

cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();

このエラーが発生しています

パラメータ化されたクエリ '(@counter_start int,@counter_current int,@counter_next int,@coun' は、指定されていないパラメータ '@user' を想定しています

どんな入力でも本当に感謝します。

4

1 に答える 1

2

アプリケーションをデバッグしてみて、 variable が保持している値を確認してくださいuseruserあなたが提供しているはnullだと思います。C# 4.0 を使用している場合は、試してください。

 cmd.Parameters.Add("@user", SqlDbType.VarChar, 50).Value = user ?? DBNull.Value;

または以前のバージョンの C# の場合

 cmd.Parameters.Add("@user", SqlDbType.VarChar, 50).Value = user != null ? user : DBNull.Value;

の代わりに空の文字列が必要な場合は、のstring.Empty代わりに使用することもできますDBNull.ValueDBNull

于 2012-07-27T03:40:47.277 に答える