2017-02-02 11 views
1

マイコード:C#でMS Accessデータベースを更新できませんか?

OleDbCommand cmd1 = new OleDbCommand("UPDATE student_info SET fee_due = @fee_due WHERE adm_no = @adm_no", con); 

cmd1.Parameters.AddWithValue("@adm_no", adm_no); 
cmd1.Parameters.AddWithValue("@fee_due", fee_due); 

int affect = cmd1.ExecuteNonQuery(); 

MessageBox.Show(affect.ToString()); 

私のコードは常に0行が毎回影響を受け示すが、私はこの問題をデバッグする方法私のデータベースにインクルードは次のようになります行が影響している必要があります

はあなたが私を提案することはできますか?

+0

あなたの文の正しい順序でパラメータを設定するようにしてください。 OleDBはパラメータになると本当に厄介です。これをチェックしてください:http://stackoverflow.com/questions/15126427/oledb-update-command and this:http://stackoverflow.com/questions/30648602/oledb-update-command-not-changing-data –

答えて

1

OleDB for MS Access は、という名前のパラメータ(位置パラメータのみ)をサポートしていないため、パラメータを定義するのと同じ順序で値を提供することに非常に注意する必要があります。

お客様の場合、@fee_dueが最初に@adm_noの前に記載されていますが、他の順序で値を指定してください。

このようにコードを変更し

OleDbCommand cmd1 = new OleDbCommand("UPDATE student_info SET fee_due = @fee_due WHERE adm_no = @adm_no", con); 

// provide the value for @fee_due FIRST  
cmd1.Parameters.AddWithValue("@fee_due", fee_due); 

// provide the value for @adm_no only after @fee_due 
cmd1.Parameters.AddWithValue("@adm_no", adm_no); 

int affect = cmd1.ExecuteNonQuery(); 

MessageBox.Show(affect.ToString()); 
関連する問題