c# - 在表中的标签上显示数据库值

标签 c# asp.net sql

我正在尝试使用 DataReader 显示数据库中特定表中的特定值。从我的 sql 查询中可以看出,我使用来自 3 个单独表的数据,memberreportid 和用户名具有 PK 和 FK r/s。 不幸的是,我无法显示出我想要的值,如下所述。

这是我收到的错误

IndexOutOfRangeException 未被用户代码处理

我逐行注释显示值代码,确实都收到了上述错误

这是我的代码。

protected void DDLCase_SelectedIndexChanged(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security = SSPI");
        con.Open();
        SqlCommand cm = new SqlCommand("Select * from MemberReport mr, PoliceReport pr, LoginRegisterOthers lro where pr.memberreportid = '" + DDLCase.SelectedItem.Text + "' and mr.memberreportid=pr.memberreportid and lro.username=mr.username and caseprogress='settled'", con);
        SqlDataReader dr;
        dr = cm.ExecuteReader();
        if (dr.Read())
        {
            lblFullName.Text = dr["lro.fullname"].ToString();
            lblContact.Text = dr["lro.contact"].ToString();
            lblTOC.Text = dr["mr.typeofcrime"].ToString();
            lblLocation.Text = dr["mr.location"].ToString();
            lblCRDT.Text = dr["mr.CRdatetime"].ToString();
            lblPicture.Text = dr["picture"].ToString();
            lblAssign.Text = dr["pr.policeid"].ToString();
            lblPRDT.Text = dr["pr.PRdatetime"].ToString();
            lblCR.Text = dr["mr.citizenreport"].ToString();
            lblPR.Text = dr["pr.policereport"].ToString();
        }

        con.Close();

    }

最佳答案

您正在使用“*”选择所有行,但您正在尝试使用表别名访问它们。无论哪种方式改变你的查询:

Select mr.location, mr.typeofcrime ... etc from MemberReport mr, PoliceReport pr, LoginRegisterOthers lro where pr.memberreportid =

或者在 datareader 中不使用别名访问它们:

lblFullName.Text = dr["fullname"].ToString();

我也强烈建议使用参数!

SqlCommand cm = new SqlCommand("Select mr.location, mr.typeofcrime ... etc from MemberReport mr, PoliceReport pr, LoginRegisterOthers lro where pr.memberreportid = @id and mr.memberreportid=pr.memberreportid and lro.username=mr.username and caseprogress='settled'");
cm.Parameters.AddWithValue("@id", DDLCase.SelectedItem.Text);

关于c# - 在表中的标签上显示数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768937/

相关文章:

c# - 如何在 C# 中显示 SQL "PRINT"命令的输出?

c# - "Error: Cannot Initialize OLE"当我尝试运行 SPA 时?

javascript - 将 %20 删除为空

mysql - 为每个用户选择一个值,即使没有 sql

c# - 调用 C++/CLI 包装器时出现外部异常 E0434352

c# - 将大量 xml 数据写入文件的最佳方法?

c# - 无法禁用 fiddler 核心自动流式传输?

c# - 使用循环从字典中删除值

MYSQL - 替换特定产品中特定字段中的文本

sql - T-SQL 内连接 内连接的第一个结果