C# 无法使用c在MS Access中使用like运算符

C# 无法使用c在MS Access中使用like运算符,c#,ms-access,C#,Ms Access,我尝试使用like运算符搜索表,但它总是返回0条记录。但是,如果我在MS Access的SQL视图中使用相同的查询,它将按预期工作。我正在使用以下代码: string searchStr=search_text.Text; if (search_text.Text.Length > 0) { string ConnectString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Server.MapPath(

我尝试使用like运算符搜索表,但它总是返回0条记录。但是,如果我在MS Access的SQL视图中使用相同的查询,它将按预期工作。我正在使用以下代码:

string searchStr=search_text.Text;
if (search_text.Text.Length > 0)
{
    string ConnectString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" +
        Server.MapPath("db\\fencing.mdb;");
    OleDbConnection objCon;
    OleDbCommand objCmd;
    DataTable DS = new DataTable();
    string strQuery = "select * from WorkOrders where subdivision like '*" 
        + searchStr + "*'";

    objCon = new OleDbConnection(ConnectString);
    OleDbDataAdapter d1 = new OleDbDataAdapter(strQuery, objCon);
    objCon.Open();
    d1.Fill(DS);
    int totalPages = 0;
    if (DS.Rows.Count > 0)
    {
        totalPages = DS.Rows.Count;
        GridView1.DataSource = DS;
        GridView1.DataBind();
        custPager.TotalPages = totalPages % GridView1.PageSize == 0 ?
            totalPages / GridView1.PageSize :
            totalPages / GridView1.PageSize + 1;

    }
    objCon.Close();
}

尝试将*字符更改为%,这是SQL查询中用作通配符的字符。

我在access中使用过它,它工作得很好。 您还必须尝试使用%代替*


string SelectQry=@select ID,分类账中的名称,如“%+Name+%”

此外,您的查询完全容易受到SQL注入的攻击。如果您不知道这是什么,请查找。%s是OleDb提供程序使用的通配符。即使从*更改为%也没有帮助。您是否可以提供一个特定的查询,该查询在Access works中直接执行,但不通过C代码执行?具体地说,我的意思是,你提供准确的查询,关键字和所有