C# 中的 DataSet 结果始终为空

The DataSet result is always empty in C#

我正在使用 DataSet 检索特定的列值。

这是我的代码:

public DataSet GetRedirectURL(string emailId)
{
    DataSet ds = new DataSet();
    using (SqlConnection con = new SqlConnection(@"Connection_String_Here"))
    {
        con.Open();
        SqlCommand sqlComm = new SqlCommand("usp_Login", con)
        {
            CommandType = CommandType.StoredProcedure
        };
        sqlComm.Parameters.AddWithValue("@EmailId", emailId);

        SqlDataAdapter da = new SqlDataAdapter
        {
            SelectCommand = sqlComm
        };

        da.Fill(ds);
    }
    return ds;
}

我也用DataTable代替它,但结果相同。 我检查了我的存储过程,当我传递参数时它显示数据。所以,SP没有错。但是 Table 不显示任何数据并且始终为空,如下所示:

我错过了什么?任何帮助将不胜感激。

我建议您先评估 DataSet 的内容。例如,输入您的即时 Window(或添加快速监视)以检查 ds.Tables[0].Rows.Count。基本上,断言您的 DataSet 已正确填充从数据库中获取的内容,并关注从 DataSet 到您用于显示它的网格对象的数据分配。

此外,.Fill() 方法有一个返回对象,它是一个 int,表示已成功填充到目标对象中的行数。例如:

int result = da.Fill(ds);

执行.Fill()方法后,检查result的值。

最后,我猜您正在使用 DataGridView 对象来可视化结果。如果是这样,您如何绑定数据?应该是这样的:

dataGridView1.DataSource = ds.Tables[0];

PS:正如我在其他评论中所读到的,不,您不需要在连接上执行 .Open() 方法。这不是必需的,它是在使用 (using SqlConnection conn = SqlConnection..)

时隐式完成的