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..)
时隐式完成的
我正在使用 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..)
时隐式完成的