2013-08-29 286 views
-2

我是C#的新手,我很難解決一個錯誤。當我登錄時,出現錯誤:錯誤:「對象引用未設置爲對象的實例。」

Object reference not set to an instance of an object.".

我知道這意味着該表不存在,但我該如何糾正它?我的數據庫包含4個表格,我所指的表格是數據庫中的第三個表格(我不知道這是否有幫助)。請告訴我,如果你需要更多的信息。我認爲問題出在循環某處,因爲我沒有語法錯誤。

在我的web用戶控件(只爲背景資料)

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> 
     <% if (Session["Patient"] == "Logged In") 
     { %> 
       <asp:Button ID="Logout" runat="server" Text="Logout" onclick="Logout_Click" />&nbsp;<br /><br /> 
       <a>Continue to:</a> &nbsp; <asp:LinkButton ID="homepage" runat="server" PostBackUrl="~/home.aspx">Home page</asp:LinkButton>| 
       <asp:LinkButton ID="book_appointment" runat="server" PostBackUrl="~/appointments.aspx">Book an Appointment</asp:LinkButton> 
       <asp:HyperLink ID="HyperLink1" runat="server" Visible="false">HyperLink</asp:HyperLink> 
     <% } 
      else 
     { %> 
     <br /> 
       <a>Username: 
       <asp:TextBox ID="username" runat="server"></asp:TextBox> <br /><br /> 
       Password: 
       <asp:TextBox ID="password" runat="server" TextMode="Password"></asp:TextBox> </a><br /><br /> 
       <asp:Button ID="Login" runat="server" Text="Login" onclick="Login_Click" /> 
       &nbsp;<asp:LinkButton ID="linkRegister" runat="server" PostBackUrl="~/register.aspx">Register</asp:LinkButton><br /><br /> 
       <a><asp:Literal ID="literal1" runat="server"></asp:Literal></a><br /><br /> 
     <% } %> 

這是後面的代碼在我的登錄控制我的登錄代碼:

protected void Login_Click(object sender, EventArgs e) 
{ 

    cQuery record = new cQuery(); //declare instance 
    record.Sqlstring = "SELECT username, password FROM dbo.patient_details"; //what to get from database -- sql query 
    DataSet data = record.SelectStatement(); //put info into dataset 

    DataTable table = data.Tables[0]; 
    foreach (DataRow row in table.Rows) 
    { 
     if (row[0].ToString() == username.Text) 
     { 
      if (row[1].ToString() == password.Text) 
      { 
       Session["Patient"] = row[0]; 
       Response.Redirect("myaccount.aspx"); 
       return; 
      } 
     } 
    } } 
+1

這錯誤意味着你正在使用的東西是空,或unistantiated ...它打破什麼線? – logixologist

+1

我標記了你,不確定你是否有足夠的經驗去提出更好的問題。你沒有提出問題,只是發佈一些代碼,並期望有人修復它,什麼行號是拋出錯誤? –

回答

2

I know this means the table does not exist

無,它沒有。如果表不存在喲會得到一個SQL錯誤。

這意味着什麼(假設它發生在您發佈的方法,你還沒有證實)是以下變量之一爲null:

row[0] 
row[1] 
username 
password 

我懷疑,除非你有一個記錄一個null密碼或usernamepassword控制被動態創建。查看異常的堆棧跟蹤,您應該能夠精確定位,其中發生錯誤。

相關問題