string sql = " Select * From students Where lastname Like ?";
....
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.Parameters.Add("@LastName", "%" + lname + "%");首先不知道这种写法是否正确。但是当 lname 是空字符串时,则一条记录都查不出来,不知道是为什么。而这种写法在查 SQL Server 数据库时返回的数据是正确的。

解决方案 »

  1.   

    access 里用  "#" 关键字
    cmd.Parameters.Add("@LastName", "#" + lname + "#");
      

  2.   

    "#" 是 access里的日期类型,记错了,不好意思
      

  3.   

    access里也是用“%”号的,这是SQL92的标准!是不是参数后要加个数据类型!LZ试一下吧!
      

  4.   

    如果你在c#里用oledb方法连的数据库,那么匹配多个字符的符号一样也是“%”,而不是“*”
    * 只是Access里自己用的,% 是通用的。这里c# 的oledb的驱动程式已经帮你转换了!
      

  5.   

    不用参数的形式,把条件直接写到 sql 语句中却是正确的:string lname = "";
    string sql = " Select * From students Where lastname Like '%" + lname + "%'";
    ....
    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    cmd.ExecuteReader();
      

  6.   

    解决了,要加个类型:OleDbParameter para = new OleDbParameter("@LName", OleDbType.BSTR);
    para.Value = "%aabb%";
    ......
    cmd.Parameter.Add(para);