使用c#在ACCESS DATABASE中搜索记录

New*_*der 3 c# ms-access c#-2.0

我正在尝试根据 msaccess 数据库中的用户输入查找记录。下面是代码

string strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Employees.mdb";
string strSql = "SELECT * FROM tbl_employees where description like '" + txtsearch.Text.ToString() + "*'";

OleDbConnection con = new OleDbConnection(strProvider);
OleDbCommand cmd = new OleDbCommand(strSql, con);
con.Open();
cmd.CommandType = CommandType.Text;
OleDbDataReader dr = cmd.ExecuteReader();
int columnCount = dr.FieldCount;
Run Code Online (Sandbox Code Playgroud)

当我在 msaccess 的 SQLView 中运行相同的查询时,我得到了记录,但是当我在 VS 中运行它时,我没有得到任何记录。

Don*_*ott 5

我认为你的匹配应该改变:

String strSql = "SELECT * FROM tbl_employees WHERE description LIKE '" + txtsearch.Text.ToString() + "%'";

//Replaced * with %
Run Code Online (Sandbox Code Playgroud)

  • @SonerGönül 这将取决于底层 ANSI 查询模式。在“SQL 兼容模式”中,“%”是必需的通配符,这很可能就是这里发生的情况。Access 将允许“*”,或许两者都允许,但 OleDb 查询将拒绝“*”。事实上,我相信OleDb始终使用兼容模式(ANSI-92查询模式)。 (2认同)