这是我程序出的问题:
   
“/UI”应用程序中的服务器错误。
--------------------------------------------------------------------------------SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。源错误: 
行 76:             DataTable dt = new DataTable();
行 77:             OleDbDataAdapter oda = new OleDbDataAdapter(strSql, conn);
行 78:             oda.Fill(dt);
行 79:             return dt;
行 80:         }
 
这是代码:

 public DataTable GetListByTop(int top)
        {
            strSql = new StringBuilder();
            strSql.Append("select top " + top + " * ");
            strSql.Append("from [GongGaoClass]");
            return GetList(strSql.ToString());        }

解决方案 »

  1.   

    我很奇怪 你为什么 要写成
    strSql.Append("select top " + top + " * "); 
                strSql.Append("from [GongGaoClass]"); 
    这个样子public DataTable GetListByTop(int top) 
            { 
                strSql = "select top "+top+" * from [GongGaoClass]";
                return strSql;
            } 这样不行吗?
      

  2.   


    楼主的代码是返回一个DataTable
      

  3.   

    看看执行后 strSql的值是什么 
      

  4.   

    你在哪里调用GetListByTop的?
    行 77:            OleDbDataAdapter oda = new OleDbDataAdapter(strSql, conn); 这里的strSql是什么?
      

  5.   


    public DataTable GetListByTop(int top) 
            { 
                strSql = "select top "+top+" * from [GongGaoClass]";
                return GetList(strSql); 
            } 
      

  6.   

     strSql = new StringBuilder(); 
                strSql.Append("select top " + top + " * "); 
                strSql.Append("from [GongGaoClass]"); 
    何必搞得这么麻烦呢
      

  7.   

     public DataTable GetListByTop(int top)
            {
                strSql = new StringBuilder();
                strSql.Append("select top "+top+" * ");
                strSql.Append("from NewsClass");
                return GetList(strSql.ToString());        }
    这段代码。在别的页面调用可以。晕死了~~~但是页面也没有错误
      

  8.   

    传入的top对吗?捕获一下sql语句执行一下就知道那里错了
      

  9.   


    这里哪里调用了GetListByTop?
    还有strSql是怎么写的?
      

  10.   

    看看你的代码中的strSql是什么
      

  11.   

    15#的
    你想看strSQL语句?   strSql = new StringBuilder();
                strSql.Append("select top " + top + " * ");
                strSql.Append("from [GongGaoClass]");
      

  12.   

    你的top是int类型,和字符串相加?
      

  13.   

     public DataTable GetListByTop(int top)
            {
                strSql = new StringBuilder();
                strSql.Append("select top " + top + " * ");
                strSql.Append("from [GongGaoClass]");
                return GetList(strSql.ToString());这是我的dal层的代码。
      

  14.   

    行 76:            DataTable dt = new DataTable(); 
    行 77:            OleDbDataAdapter oda = new OleDbDataAdapter(strSql, conn); 
    行 78:            oda.Fill(dt); 
    行 79:            return dt; 
    行 80:        } 
    错误在这里.和GetListByTop方法毫无关系.GetListByTop方法是正确的.
      

  15.   

    行 76:            DataTable dt = new DataTable(); 
    行 77:            OleDbDataAdapter oda = new OleDbDataAdapter(strSql, conn); 
    行 78:            oda.Fill(dt); 
    行 79:            return dt; 
    行 80:        } 
    =======================================================================
    strSql...把这个strSql的内容贴出来.
      

  16.   


    编译器已经很清楚明白的告诉你错误在这里了.怎么会不是?是你这里的sql语句有问题.
      

  17.   

     LZ 你可以使用SQL 2005 中带的数据库监视器,看一下在执行这段代码时,实际执行的SQL语句就可以看出问题出在哪里了。单纯的从C#语言来说,是没错的。这种问题八层是SQL语句出现了问题! 你可以试一试!
      

  18.   

    额,可能是我想错了.错误信息应该是GetList方法里的吧?
    检查一下,看看数据库里有没有名字是GongGaoClass的表,可能是你把表的名字写错了,另外把这个方括号去了试下.
      

  19.   

    这不是sql数据库,而是Access的!
      

  20.   

    不要着急,改成这样试下:
    public DataTable GetListByTop(int top) 

          return GetList("select top 1 * from GongGaoClass"); 
    }
    如果这样还是出错的话,就复制到数据库里执行一下.access用视图就可以执行了,验证一下是否正确.如果正确,说明是其它地方有问题.
      

  21.   

    你是不是有多个地方调用了GetList方法?你确定是GetListByTop方法导致的这个错误吗?是不是其它地方调用了GetList而导致的错误?调试一下看看.