2012-04-24 21 views
3

私は、レコードのセットとの '類似'の一致に基づいてレコードを取得する必要がありますselectクエリにsqlパラメータを使用する方法は?

以下のクエリは使用していません。クエリに何が間違っているか誰にでも分かりますか?

sqlCommand.CommandText =String.Format("SELECT * FROM Customer" + 
       " WHERE (Name like @Name)","'%" +searchString.Trim()+"%'"); 
      sqlCommand.Parameters.AddWithValue("Name", searchString); 

このクエリは、目的のレコードをフェッチしません。

上記のスニペットを実行している間、私は次のエラーを取得しています:

Must declare the scalar variable "@Name". 
+0

? –

+0

私は両方の方法を試してみました。まだあなたがあなたがたエラーが含まれていませんでした – NewBie

+0

同じエラーを取得イム降りるg。それを質問の一部として含めることができますか? –

答えて

10

この方法はどうなりますか?

sqlCommand.CommandText = "SELECT * FROM Customer WHERE CHARINDEX(@Name, Name) > 0;"; 
sqlCommand.Parameters.AddWithValue("@Name", searchString); 

あなたは非常に少なくとも、それを危険な道をやって主張するつもりなら、次のようにあなたはまた、最初の場所での書式設定のすべてのワイルドカードを避けるために、それをコーディングでき

sqlCommand.CommandText = "SELECT * FROM Customer WHERE Name LIKE @Name;"; 
sqlCommand.Parameters.AddWithValue("@Name", "%" + searchString + "%"); 

searchStringにある一重引用符をダブルアップします。

searchString.Replace("'", "''") 
+0

"このエラーは"スカラー変数 "@Name"を宣言しなければなりません。 " – NewBie

+0

申し訳ありませんが、2行目を編集して、今すぐお試しください。 –

+0

ワイルドカード( '%')は 'CommandText'とパラメータの間にありません。つまり、 'sqlCommand.CommandText =" SELECT * FROM Customer WHERE Name LIKE%@ Name% "' – vpiTriumph

1

String.Formatのは次のように、プレースホルダを必要と{0} {1}等

sqlCommand.CommandText = "SELECT * FROM Customer WHERE Name LIKE @Name;"; 
sqlCommand.Parameters.AddWithValue("@Name", String.Format("%{0}%", searchString)); 
0

れない場合con.State = ConnectionState.Openそして con.Open()

エンド場合あなたは `AddWithValue(「名前」は、...`それはNAME` @ `すべきではない持って
Try 

     Dim cmd As New OleDbCommand("UPDATE med_records SET [email protected],[email protected],[email protected],[email protected]_date,[email protected] where [email protected]_id", con) 
     cmd.Parameters.AddWithValue("@Medicine", txtMedicine.Text) 
     cmd.Parameters.AddWithValue("@Dosage", txt_Dosage.Text) 
     cmd.Parameters.AddWithValue("@Format", txt_Format.Text) 
     cmd.Parameters.AddWithValue("@Expiration_date", txt_Expirationdate.Text) 
     cmd.Parameters.AddWithValue("@Quantity", NumericUpDown1.Text) 
     cmd.Parameters.AddWithValue("@M_id", txt_M_id.Text) 
     cmd.ExecuteNonQuery() 
     MsgBox("Update data") 
     con.Close() 
    Catch ex As Exception 
     MsgBox(ex.Message) 

    End Try 
+1

コードのみの回答は、文脈がなく、将来の読者にとって役に立たない可能性があるため、SOでお勧めできません。あなたの解答についてコメントを編集してください。 –

関連する問題