-1

多くの列を持つ SQL Server のテーブルがあります。選択した列にのみ値を追加したいのですが、これを行うと、次のような例外が発生しました。

VALUES 句で指定された値よりも INSERT ステートメントの列が少ない。VALUES 句の値の数は、INSERT ステートメントで指定された列の数と一致する必要があります。)

これをどのように処理しますか?

これは私のコードです:

SqlConnection con = getDbConnection();
SqlCommand cmd = new SqlCommand("insert into pi_project_info(control#,pro_name,cust_name,cust_order,order_dt,req_dt,notes) values ('" + tb_control.Text + "','" + tb_project.Text + "','" + ddl_customer_name.Text + "','" + tb_order_no.Text + "','" + dp_order.Text + "','" + dp_order.Text + "','" + dp_req_del.Text + "','" + tb_notes.Text + "' )", con);

 cmd.ExecuteNonQuery();
 MessageBox.Show("Saved successfully");
4

2 に答える 2

1

あなたが得たエラーはかなり明確です。エラー メッセージは決して嘘をつきません。

なぜこのエラーが発生したのですか?

7 つの列に 8 つの値を挿入しているためです。INSERT値は、ステートメントにリストされている列番号と一致する必要があります。

これをどのように処理しますか?

7 つの列に 7 つの値のみを挿入します。または、列リストに列名がない可能性があります。

ところで、あなたのコードはSQL インジェクションに対して脆弱です。パラメータ化されたクエリを使用してみてください。詳細については、次の記事を参照してください。

于 2012-11-03T08:12:15.050 に答える
1

重複があります:

 dp_order.Text + "','" + dp_order.Text

1つドロップするだけで機能します。ただし、SQL インジェクションを回避するために Sql パラメータを使用することを検討してください

于 2012-11-03T08:13:23.407 に答える