C# 错误:对象引用未设置为对象的实例?

C# 错误:对象引用未设置为对象的实例?,c#,asp.net,C#,Asp.net,有一个错误,即对象引用未设置为对象的实例,我正在尝试使用下面使用的数据库中的电子邮件id来比较安全问题和答案 代码 但错误就在这里 **string sq = (ds.Tables["0"]).ToString(); string Ans = (ds.Tables["1"]).ToString();** 使用此代码,我将电子邮件id作为查询字符串,并将其发送到NewPassword.aspx页面,在该页面中,我可以设置新密码,并使用电子邮件id更新此密码,以更改特定列

有一个错误,即对象引用未设置为对象的实例,我正在尝试使用下面使用的数据库中的电子邮件id来比较安全问题和答案 代码

但错误就在这里

**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

这些东西中有一个是空的

你确定你不是这个意思吗

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

将表的索引用作int,因此

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

由于数据集不包含名为0的表,因此返回null

表的名称是data,因为您使用了重载,该重载采用它应该填充的表的名称

因此,这也是可行的:

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");

可能重复如何将数据库数据与文本框值进行比较。这就像我有安全问题和答案,应该进行比较,然后移动到NewPassword.aspx,然后用户可以更新他的新密码password@user3384492:我编辑了我的答案,向您展示了如何读取行字段。如果表中包含多个via DataTable.Rows,则可以循环它们。现在没有错误,但没有重定向到NewPassword.aspx
string sq = (ds.Tables[0]).ToString();
string sq = (ds.Tables["data"]).ToString();
DataTable data = ds.Tables["data"];
string firstQuestion = data.Rows[0].Field<string>("Security_Question");
string firstAnswer = data.Rows[0].Field<string>("Answer");