2014-03-03 40 views
0
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

什么错误?什么不工作?请说明问题,包括您收到的任何*实际*错误或例外情况。 – David

回答

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); 
    } 
} 
相关问题