VS2005+SQL2005(我试过的例子大都这样不知道为什么)看了很多天了 网上也查了这样的帖子 还是没有找到解决方法希望各位大大帮小弟看看,帮帮我把它调通,先谢谢了,小弟最近才拿本书在看这个asp.net所以不懂。
无法找到表 0。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 无法找到表 0。 源错误: 
行 48: 
行 49: User user = new User(); //实例化User类 
行 50: user.LoadData(LoginName); //利用User类的LoadData方法,获取用户信息 (***************就是这里出错**************8)
行 51: 
行 52: if (user.Exist) //如果用户存在 
源文件: d:\mcss\Login.aspx.cs 行: 50 堆栈跟踪: 
[IndexOutOfRangeException: 无法找到表 0。] 
System.Data.DataTableCollection.get_Item(Int32 index) +79 
mcss.DataAccessLayer.Database.GetDataRow(String SqlString) +33 
mcss.BusinessLogicLayer.User.LoadData(String loginName) +108 
mcss.Web.Login.ImageButtonLogin_Click(Object sender, ImageClickEventArgs e) in d:\mcss\Login.aspx.cs:50 
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +75 
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +115 
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7 
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11 
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4919 ___________________________________________________________________________________________________________________________设了个断点结果public DataRow GetDataRow(String SqlString) 

DataSet dataset = GetDataSet(SqlString); 
dataset.CaseSensitive = false; 
if (dataset.Tables[0].Rows.Count>0) 

return dataset.Tables[0].Rows[0]; (***************这里也找不到表0,有人说SqlString错了 我不知道这个在哪里******************)

else 

return null; 

解决方案 »

  1.   

    DataSet dataset = GetDataSet(SqlString);这个dataset里面没有表,也就是你的sqlstring没有查询到数据,你把sqlstring贴到数据库里面看看
      

  2.   


    我说错了 我找不到Sqlstring在哪里
      

  3.   

    using System;
    using System.Collections;namespace mcss.DataAccessHelper
    {
    /// <summary>
    /// SQLString 的摘要说明。
    /// </summary>
    public class SqlStringConstructor
    {
    /// <summary>
    /// 公有静态方法,将文本转换成适合在Sql语句里使用的字符串。
    /// </summary>
    /// <returns>转换后文本</returns>
    public static String GetQuotedString(String pStr)
    {
    return ("'" + pStr.Replace("'","''") + "'");
    } /// <summary>
    /// 根据条件哈希表,构造SQL语句中的AND条件子句
    /// </summary>
    /// <param name="conditionHash">条件哈希表</param>
    /// <returns>AND关系条件子句</returns>
    public static String GetConditionClause(Hashtable queryItems)
    { int Count = 0;
    String Where = ""; //根据哈希表,循环生成条件子句
    foreach(DictionaryEntry item in queryItems)
    {
    if (Count == 0)
    Where = " Where ";
    else
    Where += " And "; //根据查询列的数据类型,决定是否加单引号
    if(item.Value.GetType().ToString()=="System.String" || item.Value.GetType().ToString()=="System.DateTime")
    {
    Where +=  item.Key.ToString()  
    + " Like " 
    + SqlStringConstructor.GetQuotedString("%"
    + item.Value.ToString()
    + "%");
    }
    else
    {
    Where +=  item.Key.ToString() + "= " + item.Value.ToString();
    }
    Count ++;
    }
    return Where;
    } /// <summary>
    /// 根据条件哈希表,构造SQL语句中的条件子句
    /// </summary>
    /// <param name="conditionHash">条件哈希表</param>
    /// <param name="type">与还是或查询,取值={"AND","OR"}</param>
    /// <returns>AND关系条件子句</returns>
    public static String GetConditionClause(Hashtable queryItems,string type)
    { int Count = 0;
    String Where = ""; //根据哈希表,循环生成条件子句
    foreach(DictionaryEntry item in queryItems)
    {
    if (Count == 0)
    Where = " Where ";
    else
    Where += " "+type+" "; //根据查询列的数据类型,决定是否加单引号
    if(item.Value.GetType().ToString()=="System.String" || item.Value.GetType().ToString()=="System.DateTime")
    {
    Where +=  item.Key.ToString()  
    + " Like " 
    + SqlStringConstructor.GetQuotedString("%"
    + item.Value.ToString()
    + "%");
    }
    else
    {
    Where +=  item.Key.ToString() + "= " + item.Value.ToString();
    }
    Count ++;
    }
    return Where;
    }
    }
    }这个是SQL语句吗?  数据库里能运行?
      

  4.   

    这个是吗? 名字叫GetSafeData.cs
    ——————————————————————————————————
    using System;
    using System.Data;
    using System.Data.SqlClient;namespace mcss.DataAccessHelper
    {
    /// <summary>
    /// 从数据库中安全获取数据,即当数据库中的数据为NULL时,保证读取不发生异常。
    /// </summary>
    public class GetSafeData
    {
    #region DataRow /// <summary>
    /// 从一个DataRow中,安全得到列colname中的值:值为字符串类型
    /// </summary>
    /// <param name="row">数据行对象</param>
    /// <param name="colname">列名</param>
    /// <returns>如果值存在,返回;否则,返回System.String.Empty</returns>
    public static string ValidateDataRow_S(DataRow row,string colname)
    {
    if(row[colname]!=DBNull.Value)
    return row[colname].ToString();
    else
    return System.String.Empty;
    } /// <summary>
    /// 从一个DataRow中,安全得到列colname中的值:值为整数类型
    /// </summary>
    /// <param name="row">数据行对象</param>
    /// <param name="colname">列名</param>
    /// <returns>如果值存在,返回;否则,返回System.Int32.MinValue</returns>
    public static int ValidateDataRow_N(DataRow row,string colname)
    {
    if(row[colname]!=DBNull.Value)
    return Convert.ToInt32(row[colname]);
    else
    return System.Int32.MinValue;
    } /// <summary>
    /// 从一个DataRow中,安全得到列colname中的值:值为浮点数类型
    /// </summary>
    /// <param name="row">数据行对象</param>
    /// <param name="colname">列名</param>
    /// <returns>如果值存在,返回;否则,返回System.Double.MinValue</returns>
    public static double ValidateDataRow_F(DataRow row,string colname)
    {
    if(row[colname]!=DBNull.Value)
    return Convert.ToDouble(row[colname]);
    else
    return System.Double.MinValue;
    } /// <summary>
    /// 从一个DataRow中,安全得到列colname中的值:值为时间类型
    /// </summary>
    /// <param name="row">数据行对象</param>
    /// <param name="colname">列名</param>
    /// <returns>如果值存在,返回;否则,返回System.DateTime.MinValue;</returns>
    public static DateTime ValidateDataRow_T(DataRow row,string colname)
    {
    if(row[colname]!=DBNull.Value)
    return Convert.ToDateTime(row[colname]);
    else 
    return System.DateTime.MinValue;
    }
    #endregion DataRow #region DataReader /// <summary>
    /// 从SqlDataReader中安全获取数据
    /// </summary>
    /// <param name="reader">数据读取器SqlDataReader</param>
    /// <param name="colname">列名</param>
    /// <returns>列中的字符串数据,如果为空,则返回System.String.Empty</returns>
    public static string ValidateDataReader_S(SqlDataReader reader,string colname)
    {
    if(reader.GetValue(reader.GetOrdinal(colname))!=DBNull.Value)
    return reader.GetString(reader.GetOrdinal(colname));
    else
    return System.String.Empty;
    } public static int ValidateDataReader_N(SqlDataReader reader,string colname)
    {
    if(reader.GetValue(reader.GetOrdinal(colname))!=DBNull.Value)
    return reader.GetInt32(reader.GetOrdinal(colname));
    else
    return System.Int32.MinValue;
    } public static double ValidateDataReader_F(SqlDataReader reader,string colname)
    {
    if(reader.GetValue(reader.GetOrdinal(colname))!=DBNull.Value)
    return reader.GetDouble(reader.GetOrdinal(colname));
    else
    return System.Double.MinValue;
    } public static DateTime ValidateDataReader_T(SqlDataReader reader,string colname)
    {
    if(reader.GetValue(reader.GetOrdinal(colname))!=DBNull.Value)
    return reader.GetDateTime(reader.GetOrdinal(colname));
    else
    return System.DateTime.MinValue;
    } #endregion DataReader
    }
    }
      

  5.   


    我在web.config里面有啊<appSettings>
    <add key="DBConnectionString" value="server=(local);database=mcss;User Id=sa;pwd=sa"/>
    </appSettings>
      

  6.   

    我把SQL打开 连接好了 再进vs2005 运行还是这样无法找到表 0。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 无法找到表 0。源错误: 
    行 193: DataSet dataset = GetDataSet(SqlString);
    行 194: dataset.CaseSensitive = false;
    行 195: if (dataset.Tables[0].Rows.Count>0)
    行 196: {
    行 197: return dataset.Tables[0].Rows[0];
     源文件: d:\mcss\App_Code\DataAccessLayeer\Database.cs    行: 195 
      

  7.   

    SqlString   是不是SQLSring.cs
      

  8.   

    你先学会使用数据库,再学会用vs自己编写简单的程序,然后再学如何用vs编写数据库查询代码。不要什么都还不会就搞一堆源代码来看。
      

  9.   

    谁给个 SQL语句的通用类 构造啊。  我试试是不是我的有问题
      

  10.   

    你不是设了断点吗,看看那里的SqlString的值是多少(选中,右键,添加监视)
      

  11.   

    帅哥,你数据库连接上没哦SQL2000中,你用查询分析器,试下能连接到你网站内写的库地址吗?如果连接不上,你在企业管理器里,把这库的用户选择使用此库,并勾选System Administrators此服务角色.应该就可以了.