0

我不明白为什么它会抛出这个错误。代码对我来说似乎很好,任何人都可以发现我哪里出错了?我正在尝试匹配数据库中的用户名和密码。谢谢

Line 20:         myData = loginservice.AdminGetUserTable();
Line 21: 
Line 22:         foreach (DataRow myRow in myData.Tables["Users"].Rows) 
Line 23:         {
Line 24:             if (txt_username.Text == myRow["Username"].ToString() && txt_password.Text == myRow["Password"].ToString())

错误:

[NullReferenceException: Object reference not set to an instance of an object.]
   Login.Button1_Click(Object sender, EventArgs e) in f:\.NetProject\WebSite\Login.aspx.cs:22
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9553178
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
4

2 回答 2

0

使用 try catch ...可能是您没有得到“用户”表。使用 Tables[0] 而不是 Tables["Users"]。使用断点。有很多方法。尝试任何一个

于 2013-04-25T17:55:42.927 回答
0

这是所有可能性:

  1. loginservice 为空,或
  2. myData 为空,或
  3. myData.Tables 不包含名为“Users”的表,因此它返回 null,或者
  4. 用户表中的行不包含名为“用户名”的列,或
  5. 用户表中的行不包含名为“密码”的列

哪一个?-只需将错误行号与您的源代码匹配即可。

如果您的第 22 行确实是错误调用堆栈中提到的第 22 行,那么“null”对象必须是 myData 或 myData.Tables["Users"]

于 2013-04-25T17:56:38.800 回答