如何将数据库中的特定数据显示到文本框中?

时间:2014-03-03 14:19:48

标签: c#

public DataTable DisplayHolidays(int empid)
{
    DataTable dt = new DataTable();

    SqlCommand cmd = new SqlCommand("ComputeHoliday", myCon);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = empid;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    SqlDataReader rd = cmd.ExecuteReader();

    while (rd.Read())
    {
        temp2 = rd[0].ToString();
    }
    return dt;
}

这是我的代码我有这个部分的问题/错误。此代码在类中不在表单加载中。它无法在文本框中显示数据。我正在使用temp2将数据存储在所选行中,但它还没有工作。

1 个答案:

答案 0 :(得分:0)

我认为您在cmd.ExecuteReader()处获得了例外。

请注意,必须先打开连接,然后才能使用cmd.ExecuteReader()中的命令。 DataAdapter.Fill不需要打开连接,dataadapter会隐式打开/关闭它。

MSDN

  

与SELECT语句关联的连接对象必须是   有效,但不需要打开。如果连接已关闭   在调用Fill之前,它会打开以检索数据,然后关闭。如果   在调用Fill之前连接已打开,它仍保持打开状态。


为什么使用DataAdapter.Fill(DataTable)Command.ExecuteReader?您只需要一种方法来获取数据。如果您已经填写了表格:

If(dt.Rows.Count > 0)
{
    temp2 = dt.Rows[0].Field<string>(0);
}

如果您不使用DataAdapterDataTable,只使用读者:

using(SqlDataReader rd = cmd.ExecuteReader())
{
    if(rd.HasRows)
    {
        rd.Read();
        temp2 = rd.GetString(0);
    }
}