2017-12-08 11 views
-3

私はBUDGET_FINALTESTという名前のテーブルを作成しましたが、ボタンで実行するたびに例外エラーが発生します。C#データベースにデータを挿入する際にエラー例外が発生し続けるのはなぜですか?

SqlCommand cmd = new SqlCommand("insert into BUDGET_FINALTEST values (@EMPLOYEE_ID,@LAST_NAME,@FIRST_NAME,@DIVISION,@DATE_OF_BUDGET,@BUDGET)", con); 
    cmd.Parameters.AddWithValue("@EMPLOYEE_ID", tbEmployeeID.Text); 
    cmd.Parameters.AddWithValue("@LAST_NAME", tbLName.Text); 
    cmd.Parameters.AddWithValue("@FIRST_NAME", tbFName.Text); 
    cmd.Parameters.AddWithValue("@DIVISION", tbDivision.Text); 
    cmd.Parameters.AddWithValue("@DATE_OF_BUDGET", dateTimePicker2.Value.Date); 
    cmd.Parameters.AddWithValue("@BUDGET", tbBudget.Text); 
    cmd.ExecuteNonQuery(); 

An unhandled exception of type 'System.Data.SqlClient.SqlException' occured in System.Data.dll

Additional information: Column name or number of supplied values does not match table definition

+4

であるべき。最小、完全、および検証可能な例をここで作成する方法を見てください。https://stackoverflow.com/help/mcve –

+1

[SQL Serverの挿入エラー:列名または指定された値の数がテーブル定義と一致しません](https://stackoverflow.com/questions/17403243/sql-server-insert-error-column-name-or-number-of-supplied-values-does-not-match) – MatSnow

+0

@EdwardGarciaの今後のサポートあなたはあなたの車輪を回転させないことに関しては、エラーメッセージはまず第一にグーグルグーグルにされている可能性があります、そして、あなたは基本的な挿入コマンド構文を探知しなければなりませんでした: – MethodMan

答えて

5

あなたはパラメータの間違った番号を持っているか、彼らは間違った順序です。 insert文に必ず列リストを指定してください。
これは、このような間違いを防ぎ、新しい列がテーブルに追加されてもコードを有効に保ちます。

"insert into BUDGET_FINALTEST values (@EMPLOYEE_ID,@LAST_NAME,@FIRST_NAME,@DIVISION,@DATE_OF_BUDGET,@BUDGET)" 

はエラーを与えていない場合は、私たちが支援するために、それはできません

"insert into BUDGET_FINALTEST (EMPLOYEE_ID, LAST_NAME, FIRST_NAME, DIVISION, DATE_OF_BUDGET, BUDGET) values (@EMPLOYEE_ID,@LAST_NAME,@FIRST_NAME,@DIVISION,@DATE_OF_BUDGET,@BUDGET)" 
+3

注:この問題は、*主な理由*ユーザーが値を提供したくない、または行バージョントラッキング列がある場合、基本的に:データベースが自動的に値を提供するもの –

+0

@MarcGravell非常に真実。それを思い出してくれてありがとう! –

関連する問題