1

我有一个 Windows 窗体应用程序。我必须使用“Like”运算符从 MySQL 数据库中搜索数据。我已经使用占位符(@test,见下面的代码)作为搜索词,但它没有发生。

简单来说,我有一个名为 txtSearch 的 TestBox,我可以在其中部分或全部输入学生的姓名。我需要在 DataGrid 上检索与搜索条件匹配的所有条目。

请检查我下面的代码,让我知道我错在哪里(下面删除了 Conn 字符串):

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 回答