2014-03-05 229 views
0

沒有設置爲一個對象的實例的錯誤,即對象的引用,我試圖來比較安全性問題,並使用電子郵件ID是存在於數據庫中使用下面 代碼錯誤:未將對象引用設置爲對象的實例?

protected void Button1_Click(object sender, EventArgs e) 

{ 

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\keishna\Documents\Visual Studio 2010\Projects\MasterDemo\App_Data\Earth_Movers.mdf;Integrated Security=True;User Instance=True"); 
     con.Open(); 
     DataSet ds = new DataSet(); 
     SqlCommand cmd = new SqlCommand("SELECT Security_Question,Answer FROM Registration Where email='" + TextBox3.Text + "'", con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(ds,"data"); 
     //string Ans = (cmd.ExecuteReader()).ToString(); 
     string sq = (ds.Tables["0"]).ToString(); 
     string Ans = (ds.Tables["1"]).ToString(); 
     if (sq == TextBox3.Text && Ans == TextBox2.Text) 
     { 
      Response.Redirect("NewPassword.aspx?email="+TextBox3.Text); 
     } 
    } 

但錯誤是在這裏回答

**string sq = (ds.Tables["0"]).ToString(); 
      string Ans = (ds.Tables["1"]).ToString();** 

使用此代碼我以電子郵件ID作爲查詢字符串,並將其發送給NewPassword.aspx頁面,在這裏我可以設置新密碼時應並更新此使用電子郵件ID爲改變特定列。

和NewPassword.aspx代碼有一個按鈕,在一個按鈕上單擊新密碼應該在我的數據庫的註冊表和登錄表中更新。

NewPassword.aspx code 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 

public partial class Webpages_NewPassword : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 

     SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\krishna\Documents\Visual Studio 2010\Projects\MasterDemo\App_Data\Earth_Movers.mdf;Integrated Security=True;User Instance=True"); 
     con.Open(); 
     if (Request.QueryString["email"] != null) 
     { 
      string Email= Request.QueryString["email"]; 
      SqlCommand cmd = new SqlCommand("update Registration set Password where email='" + Email + "'", con); 
     } 
     con.Close(); 

    } 
} 

請儘快提供給我解決方案。

感謝和問候

Vasundara雷迪

+0

可能重複[什麼是NullReferenceException,我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – nvoigt

回答

4

這些事情之一是null

ds 
ds.Tables 
ds.Tables["0"] 
ds.Tables["1"] 

你確定你不是這個意思嗎?

ds.Tables[0] 
ds.Tables[1] 
2

使用表的索引爲int,所以不是

string sq = (ds.Tables["0"]).ToString(); 

string sq = (ds.Tables[0]).ToString(); 

因爲你DataSet不包含返回null名稱"0"表。

您的表的名稱是"data",因爲您已使用DataApter.Fill的過載,該過載採用應填寫的表的名稱。

所以這個作品也:

string sq = (ds.Tables["data"]).ToString(); 

然而,我敢肯定,你不想DataTable.ToString,但它的內容是行(S):中

DataTable data = ds.Tables["data"]; 
string firstQuestion = data.Rows[0].Field<string>("Security_Question"); 
string firstAnswer = data.Rows[0].Field<string>("Answer"); 
+0

如何比較數據庫與文本框value.its像我有安全問題和答案應該被比較,然後移動到NewPassword.aspx,然後用戶可以更新他的新密碼 – user3384492

+0

@ user3384492:我編輯了我的答案,告訴你如何閱讀行字段。如果表格包含多個通過「DataTable.Rows」,則可以循環它們。 –

+0

現在沒有錯誤但沒有重定向到NewPassword.aspx – user3384492

相關問題