2016-12-03 5 views
1

に私は私のデータベースにDELETEクエリを実行するたびに削除中一つ以上の必要なパラメータのエラーのために与えられた値がありません、次のエラー結果:データベース

一つ以上の必要なパラメータ

のために与えられた値がありません

名前を確認してもエラーはあります。以下は、クエリを実行するために使用するコードです:

connection.Open(); 
OleDbCommand command = new OleDbCommand(); 
command.Connection = connection; 
string query = "delete FROM Accounts WHERE Id_No = " + IdNoBox.Text + ""; 
command.CommandText = query; 
command.ExecuteNonQuery(); 
MessageBox.Show("Successfully Deleted"); 
this.Close(); 
connection.Close(); 
+0

通常、これはあなたの名前(表または列)のいずれかがmispelledされ、エンジンが、それは、これが問題だった場合、彼は別のエラーメッセージが表示されますパラメータ – Steve

答えて

0

Id_Noが文字列であると仮定すると、それは単一quotes.Otherwiseで囲む必要があり、それをパラメータとして考慮されます。 クエリーはstring query = "delete FROM Accounts WHERE Id_No = "'" + IdNoBox.Text + "'";

+0

であると考えていることを意味します。 'データ型の不一致' – Steve

+0

IdNoBox.Textが文字列の場合は、 –

+0

と仮定します。IdNoBox.Text =文字列の場合 –

0

とする必要があります。特定の質問に対処するには、Id_Noが文字ベースの場合は、その周りに一重引用符を付ける必要があります。読みやすくするために、次の構文を考慮してください。

string query = string.Format("delete FROM Accounts WHERE Id_No = '{0}' ", IdNoBox.Text); 

また、例外が発生した場合を含めて、connection /コマンドは適切に処理する必要があります。これを行う簡単な方法は、using節を使うことです。下記参照。

using (var connection = new OleDbConnection()) 
using (var command = new OleDbCommand(){Connection = connection,CommandText = query}) 
{ 
    connection.Open(); 
    command.ExecuteNonQuery(); 
} 
MessageBox.Show("Successfully Deleted"); 
+0

この構文を使用すると、別のエラーポップアップが表示されます。クエリ式 'Id No = 1123'の中に(演算子がありません)。 –

+0

IdとNoの間に空白がありますか? –