【问题标题】:The DataSet result is always empty in C#DataSet 结果在 C# 中始终为空
【发布时间】:2020-08-24 01:33:21
【问题描述】:

我正在使用 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 没有显示任何数据,并且始终为空,如下所示:

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

【问题讨论】:

  • 您是否尝试过执行您的SqlCommand 本身?
  • 你没有在任何地方打开你的连接。在传递给命令对象之前打开它
  • @VishalPawar 即使打开连接,DataSet 结果也是空的。
  • 关注这可能会有所帮助dotnetperls.com/sqldataadapter
  • 很高兴我的回答帮助了你@noobprogrammer !!

标签: c# stored-procedures dataset sqlconnection dataadapter


【解决方案1】:

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

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

int 结果 = da.Fill(ds);

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

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

dataGridView1.DataSource = ds.Tables[0];

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多