sqltxt = "select top @pagesize * from article where cid=@cid";
OleDbParameter[] parms = { 
                new OleDbParameter("@pagesize", OleDbType.Integer),
                new OleDbParameter("@cid", OleDbType.Integer)};这里select top加入了变量就报错“SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。”
报的这个错不是pagesize跟关键字冲突,我改成别的也一样报错。
网上查了下,好像SqlServer里可以加(@pagesize)括号解决,但我这个是Access不行,依然报错
只要我把@pagesize随便换成数字就可以正常运行。
有什么解决方法吗?
要不然只能用字符串连接了~

解决方案 »

  1.   


    sqltxt = "select top "+pagesize+" * from article where cid=@cid";
    OleDbParameter[] parms = { 
                      new OleDbParameter("@cid", OleDbType.Integer)};改成这样吧。。
      

  2.   

    sqltxt = "exec('select top '+@pagesize+' * from article where cid='+@cid+')";
      

  3.   

    pagesize 不存在注入的可能 所以那样写也没什么问题
      

  4.   

    exec存储过程里面的吗?我这不是写存储过程里的
      

  5.   

    access数据库中语法貌似与sql不太一样,很恶心!!
      

  6.   

    exec('select   top   '+@strCounter+'     *   from  tb') 
    拼接SQL语句后再执行
      

  7.   

    试了,报错“EXECUTE 后需要有查询名称”