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;
}
}
无法找到表 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;
}
}
我说错了 我找不到Sqlstring在哪里
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语句吗? 数据库里能运行?
——————————————————————————————————
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
}
}
我在web.config里面有啊<appSettings>
<add key="DBConnectionString" value="server=(local);database=mcss;User Id=sa;pwd=sa"/>
</appSettings>
说明: 执行当前 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