2016-09-01 16 views
0

これは私が試みたものです。しかし、私は何のエラーも出力されていません。私は間違っていた。なぜこのクエリが機能していないのかを示します。where句でパラメータを渡す方法は?

SqlCommand cmd = new SqlCommand(); 
      cmd.Connection = con; 
      cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = '@term' AND paid_or_unpaid = '@Paid' ORDER BY Id DESC"; 
      cmd.Parameters.AddWithValue("@term", term); 
      cmd.Parameters.AddWithValue("@Paid", paid); 

しかし、パラメータを指定せずにクエリを実行しようとすると、出力が表示されます。

+1

変数名を一重引用符で囲む必要はありません – Rick

+0

パラメータ名の前後に「@ Param」という単引用符は必要ありません。 – Dusan

+0

@Rick:「必要ありません」という言葉は間違った言葉ですが、アポストロフィで渡すとパラメータではなく文字列リテラルです。 –

答えて

0

まず試してみてくださいクエリ文字列:

cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC"; 

私はAddWithValue()を使用しないようにあなたを警告し、言いました。これは、文字列に渡される型を推測する必要があります。タイムコードが明示的でない場合、誤解の危険があります。たとえば、Hereは、これが良い考えではない理由を説明するブログ記事です。

0

は、私のコメントを1としてクエリ

SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC"; 
     cmd.Parameters.AddWithValue("@term", term); 
     cmd.Parameters.AddWithValue("@Paid", paid); 
1

のパラメータにsingle Quotesを使用しないでください - 単一引用符が存在してはならない - 彼らは文字通りにパラメータを変更します。だからあなたのクエリには、emp_idは、文字列「@termを」で、渡されたパラメータを使用しないでバランスを探している。あなたは、単一引用符を必要としない、

SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC"; 
     cmd.Parameters.AddWithValue("@term", term); 
     cmd.Parameters.AddWithValue("@Paid", paid); 
+0

お友達に感謝します。その作業 –

1

一重引用符( ')で囲まれたものはすべて、文字列とみなされます。したがって、引用符( ')を付けずにパラメータ名を記述すると動作します。

"SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC" 

残りのコードは同じになります。

+0

は正常に動作してくれてありがとう –

0
SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC"; 
     cmd.Parameters.AddWithValue("@term", term); 
     cmd.Parameters.AddWithValue("@Paid", paid); 
関連する問題