我知道应该做些什么,只是不确定如何将它们放在一起。我正在尝试使用文本框搜索数据中的记录。我想如果用户不知道整个地址只是为了能够输入地址的一部分并仍然返回记录。如果我输入完整地址,则返回记录。但如果我只是输入前几个字母并且搜索没有任何回报。
由于
这就是我所拥有的:
protected void btnFind_Click(object sender, EventArgs e)
{
string searchFor = txtFirstName.Text.Trim();
int results = 0;
string errorText = "No records found";
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\Contacts.mdb");
conn.Open();
DataSet ds = new DataSet();
string cmd = "SELECT * FROM Contact WHERE Address LIKE '+searchFor ' ";
OleDbDataAdapter da = new OleDbDataAdapter(cmd, conn);
da.Fill(ds, "Search");
DataRow[] row;
DataRow dr;
row = ds.Tables["Search"].Select("Address='" + searchFor + "'");
results = row.Length;
if (results > 0)
{
dr = row[0];
txtFirstName.Text = dr["FirstName"].ToString();
txtLastName.Text = dr["LastName"].ToString();
txtEmail.Text = dr["Email"].ToString();
txtAddress.Text = dr["Address"].ToString();
txtPhone.Text = dr["Phone"].ToString();
}
else
{
lblError.Text = errorText;
}
conn.Close();
}
答案 0 :(得分:2)
1。您在查询中滥用单引号。你需要用单引号包装字符串变量。
2。您未在查询中正确添加参数。你需要关闭参数
连接+
运算符
3。您需要使用%
进行搜索
示例:如果要在中间搜索,可以在搜索字符串之前和之后使用%
这个
string cmd = "SELECT * FROM Contact WHERE Address LIKE '+searchFor ' ";
应该是
string cmd = "SELECT * FROM Contact WHERE Address LIKE '%"+ searchFor +"%'";
答案 1 :(得分:-1)
您可以尝试以下代码:
string cmd = "SELECT * FROM Contact WHERE Address LIKE '%"+ searchFor +"%'";