1

Windows フォーム アプリケーションがあります。「Like」演算子を使用して、MySQL データベースからデータを検索する必要があります。検索語にプレースホルダー (@test、以下のコードを参照) を使用しましたが、それは起こりません。

簡単に言うと、生徒の名前の一部または全部を入力できる txtSearch という名前の TestBox があります。DataGrid の検索条件に一致するすべてのエントリを取得する必要があります。

以下のコードを確認して、どこが間違っているか教えてください (Conn String は以下で削除されています)。

try
{
dataGridView1.Visible = true;
BindingSource bs = new BindingSource();
DataTable newadm = new DataTable();
String term = txtSearch.Text;
string db = ----Connection String goes here----

bs.DataSource = newadm;
this.dataGridView1.DataSource = bs;

MySqlConnection conn = new MySqlConnection(db);
conn.Open();

string s = "select * from newadm where firstname like '%@term%' OR lastname like '%@term%'";
MySqlCommand cmd = new MySqlCommand(s, conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@term", MySqlDbType.VarChar).Value = txtSearch.Text;

MySqlDataAdapter da = new MySqlDataAdapter();
da.SelectCommand = new MySqlCommand(s, conn);

da.Fill(newadm);
da.Update(newadm);
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}

このコード (およびその多くのバリエーション) を使用すると、DataGrid で結果が得られません。「@Term」プレースホルダーを削除して、正確な用語を置き換えると、機能します。

助けてください。前もって感謝します。

4

1 に答える 1

0

試す、

string s = "select * from newadm where firstname like @term OR lastname like @term";
MySqlCommand cmd = new MySqlCommand(s, conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@term", MySqlDbType.VarChar,40).Value = "%" + txtSearch.Text + "%";
于 2012-07-05T10:16:48.010 に答える