accesscmd.CommandType = CommandType.Text;
                //参数化传的值
                OleDbParameter[] parms = new OleDbParameter[]{
                    new OleDbParameter("@tables",OleDbType.VarChar,2000),
                    new OleDbParameter("@filters",OleDbType.VarChar,4000)
                };
                parms[0].Value = tables;
                parms[1].Value = filters;
                foreach (OleDbParameter parm in parms)
                {
                    accesscmd.Parameters.Add(parm);
                }
                string sqlstr = "select count(p.[ID]) from @tables where @filters";
                accesscmd.CommandText = sqlstr;
                int total = int.Parse(accesscmd.ExecuteScalar().ToString());
为什么accesscmd.ExecuteScalar()会报查询语句不完整的错误?谢谢!

解决方案 »

  1.   

    @tables的值为:ceb_Area p,@filters的值为:1=1
      

  2.   

    @tables的值为:ceb_Area p,@filters的值为:1=1
      

  3.   

    不允许这样写吧  
    from @tables,只能是字段值可以你可以直接string sqlstr = "select count(p.[ID]) from " + tables + " where name=@filters";
    这样写或者直接拼接成
    string sqlstr = "select count(*) from " + tables + " where " + filters;
      

  4.   

    Access 不支持存储过程写法的语句,只支持简单sql 语句!