有一个错误,即对象引用没有设置为对象的实例,我试图使用下面的数据库中存在的电子邮件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 Reddy
答案 0 :(得分:5)
其中一件事是null
。
ds
ds.Tables
ds.Tables["0"]
ds.Tables["1"]
你确定你不是这个意思吗?
ds.Tables[0]
ds.Tables[1]
答案 1 :(得分:3)
将表的索引用作int
,而不是
string sq = (ds.Tables["0"]).ToString();
此
string sq = (ds.Tables[0]).ToString();
由于您的DataSet
不包含名称为"0"
的表格,因此会返回null
。
您的表名是"data"
,因为您使用了DataApter.Fill
的重载,该重载采用了应该填充的表的名称。
所以这也有效:
string sq = (ds.Tables["data"]).ToString();
然而,我确定你不想要DataTable.ToString
但是它的行的内容是:
DataTable data = ds.Tables["data"];
string firstQuestion = data.Rows[0].Field<string>("Security_Question");
string firstAnswer = data.Rows[0].Field<string>("Answer");