有时候网页很正常显示出来,有时候不得,大多数时间不得,,所以来求助大家,帮帮解决问题先,,我白天没时间,,晚上追问,不过还是希望晚上就找到答案,没有什么给大家,只能给分,希望帮帮忙,数据库没问题,我自己建个测试页,百试不断线,千试不爽手,里面有内容,但是我的网页却返回那样的提示(没有表0,也就是变量里没有数据)
帖码给大家看看,如果还想看别的码,明天晚上再发,,我的站很简单,基本就下面这些,  <add name="net_sqlServerConn" connectionString="Data Source=ip.xx.xx.xx;Network Library=DBMSSOCN;Initial Catalog=sq_guigang;User ID=sq_guigang;Password=guigang"/>
  上面是我远程数据库连接串,
public DataSet Page_DataSet(string s_page,string Table, int M_Number,string WhereAndSql)
//返回DataSet类型,里面有检索回来的库信息
    { 
        DataSet P_Data=new DataSet();
        string sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " order by id desc";
        int N_page = Request_page(s_page);
        if (N_page != 1 && WhereAndSql=="")
        {
            sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " WHERE (id NOT IN (SELECT TOP " + ((N_page - 1) * 20) + " id FROM " + Table + " order by id desc)) order by id desc";
        }
        else if (N_page != 1 && WhereAndSql != "")
        {
            sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " "+WhereAndSql+" and (id NOT IN (SELECT TOP " + ((N_page - 1) * 20) + " id FROM " + Table + " "+WhereAndSql+" order by id desc)) order by id desc";
        }
        else if(N_page==1 && WhereAndSql!="")
        {
            sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " " + WhereAndSql + "  order by id desc";
        }
        try
        {
            SqlConnection myCon = new SqlConnection(myConnStr);
            SqlDataAdapter myAdapter = new SqlDataAdapter(sqlstr, myCon);
            myAdapter.Fill(P_Data, Table);
            
        }
        catch (Exception e)
        {
            System.Web.HttpContext.Current.Response.Write("Error_page.aspx?msg=数据有问题,如有疑问请联系站长!" + e);
        }
        return P_Data;
    }上面是我写的一个类,取数据用的,
//显示类目信息
        Data_Class ds = new Data_Class("sqlServer");
        DataSet dsms= new DataSet();
        //城市生活
        dsms = ds.Page_DataSet("1", "Article", 12, "where class='chengshishenghuo'");
        
            chengshishenghuo.InnerHtml = "<ul>";
            for (int i = 0; dsms.Tables[0].Rows.Count > 0 && i < dsms.Tables[0].Rows.Count; i++)
            {
                string aLink = "<a href='contents.aspx?class_str=chengshishenghuo&ConId=" + ds.encryption(dsms.Tables[0].Rows[i]["id"].ToString()) + "' title='" + dsms.Tables[0].Rows[i]["title"].ToString() + "' target='_blank'>";
                string titles = (dsms.Tables[0].Rows[i]["title"].ToString().Length > 25 ? dsms.Tables[0].Rows[i]["title"].ToString().Substring(0, 25) + "..." : dsms.Tables[0].Rows[i]["title"].ToString());
                chengshishenghuo.InnerHtml += "<li>" + aLink + titles + "</a></li>";
            }
            chengshishenghuo.InnerHtml += "</ul>";
        
上面是用来显示读取到的数据的
我知道用下面的判断对DataSet变量判断后再用,但我加上后没有值输出,所以还是寻找根本原因先if (dsms != null && dsms.Tables.Count > 0)
        {        }
        else
        {
            chengshishenghuo.InnerHtml = "没有信息!";
        }
我不加判断出的提示是:Server Error in '/' Application.
--------------------------------------------------------------------------------Cannot find table 0. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.IndexOutOfRangeException: Cannot find table 0.Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  Stack Trace: 
[IndexOutOfRangeException: Cannot find table 0.]
   System.Data.DataTableCollection.get_Item(Int32 index) +95
   Data_Class.add(String field, String adds) +870
   moban_MasterPage.Page_Load(Object sender, EventArgs e) +707
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Control.LoadRecursive() +146
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207 
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272 

解决方案 »

  1.   

    用户sa登陆失败,解决办法:
    首先选中服务器(右键)->属性->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"
    其次展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用 
      

  2.   

    try
            {
                SqlConnection myCon = new SqlConnection(myConnStr);
                SqlDataAdapter myAdapter = new SqlDataAdapter(sqlstr, myCon);
                myAdapter.Fill(P_Data, Table);            if (P_Data.Tables.Count == 0)
                {
                    throw new Exception("no table returned, sql statement is:" + sqlstr);
                }
                
            }看看执行的sql语句是什么。
      

  3.   

    还有if (N_page != 1 && WhereAndSql=="")
            {
                sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " WHERE (id NOT IN (SELECT TOP " + ((N_page - 1) * 20) + " id FROM " + Table + " order by id desc)) order by id desc";
            }
            else if (N_page != 1 && WhereAndSql != "")
            {
                sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " "+WhereAndSql+" and (id NOT IN (SELECT TOP " + ((N_page - 1) * 20) + " id FROM " + Table + " "+WhereAndSql+" order by id desc)) order by id desc";
            }
            else if(N_page==1 && WhereAndSql!="")
            {
                sqlstr = "SELECT TOP " + M_Number + " * FROM " + Table + " " + WhereAndSql + "  order by id desc";
            }
            else
            {
                 是不是进这里了,可以throw个Exception试一试
                 
             }
      

  4.   

    没查到表,sql语句拼接有问题,调试是王道
      

  5.   

    Page_DataSet 方法有问题 断点跟踪 判断方法返回值为什么 我估计返回值里面都是count=0所以你找不到索引为0的表 另外 你建的测试页 和你的应用页是否调用的同样的方法 传入的是同样的查询条件  
      

  6.   

    要不开个多线程访问,然后每一记录你select到的dataset是不是有数据库,
      

  7.   

    你真够可以的,sql连接都不关闭,而且每次都是新创建的,就算收费版的sql连接数也不够啊
    我估计你的原因是sql并发连接达到最大了
    在函数结束前把sql连接关了估计马上就好了
      

  8.   

    数据库操作结束后要关闭连接是基本知识,除非你所有操作用同一个连接(静态连接),
    像你这种每次都new出来的连接不关闭的话会出大问题的!
    在return前面加上mycon.close();
      

  9.   

    try
            {
                SqlConnection myCon = new SqlConnection(myConnStr);
                SqlDataAdapter myAdapter = new SqlDataAdapter(sqlstr, myCon);
                myAdapter.Fill(P_Data, Table);
                return P_Data;        }
            catch (Exception e)
            {
                System.Web.HttpContext.Current.Response.Write("Error_page.aspx?msg=数据有问题,如有疑问请联系站长!" + e);
    return null;
            }看看返回什么
            
      

  10.   


    小的不明白你说的是什么,,不过从站点上测试得出函数返回的dataset里确实没数据,访问库的代码没提示出错,而且有时候又正常(返回有数据),,出错是出在读取空值的dataset变量上
      

  11.   


    加了断点,执行的SQL语句是:SELECT TOP 12 * FROM Article where class='chengshishenghuo'  order by id desc因为有时候得,所以我没发觉SQL语句有问题
      

  12.   

    改为
    SELECT TOP 12 * FROM Article where [class]='chengshishenghuo' order by id desc
    试试
      

  13.   

    跟踪 执行完sql后你的结果是否为空 表的count是否为0 看看是否有数据 保证数据的前提下 你再去访问ds.table[0] 这个表 
      

  14.   


    我没用sa,而且用的是服务商的空间,帐号密码IP,我能连得上,应该不关这里的事,,因为我单独建一页面连接库很正常
      

  15.   

    看来你就没有理解到关闭连接的必要性,你的连接每次都是new出来的,也就是说每调用一次函数都会多出一个连接,而且这个连接不会被释放,这样很快就会达到最大并发连接数,然后就只有重启sql服务或者等待连接自己释放(要多久不知道,反正很久),你在连不上时重启sql服务或重启系统看是不是就能连上了,是这样的话多半就是sql连接数的问题
      

  16.   

     我检查最后的结果是sql服务器问题,叫服务商给我换了一个,,不是代码问题,谢谢大家了,