下面是我的代码:
using (SqlCommand command = new SqlCommand(sqlcmd, con))
{
DataTable dt = new DataTable();
try
{
if (con.State != ConnectionState.Open) { con.Open(); }
using (SqlDataReader reader = command.ExecuteReader())
{
dt.Load(reader);
return dt;
}
}
finally
{
if (con.State == ConnectionState.Open) { con.Close(); }
}
}
目前知道出问题的地方是dt.Load(reader);这一句。但是不知道为什么,reader里面的值存不到datatable里面去。
using (SqlCommand command = new SqlCommand(sqlcmd, con))
{
DataTable dt = new DataTable();
try
{
if (con.State != ConnectionState.Open) { con.Open(); }
using (SqlDataReader reader = command.ExecuteReader())
{
dt.Load(reader);
return dt;
}
}
finally
{
if (con.State == ConnectionState.Open) { con.Close(); }
}
}
目前知道出问题的地方是dt.Load(reader);这一句。但是不知道为什么,reader里面的值存不到datatable里面去。
用sqlDataAdapter
和dataset
来填充
{
DataTSet ds = new DataTable();
try
{
if (con.State != ConnectionState.Open) { con.Open(); }
using (SqlDataReader reader = command.ExecuteReader())
{
reader.Fill(ds,"aa");
return ds;
}
}
finally
{
if (con.State == ConnectionState.Open) { con.Close(); }
}
}
用DataSet.Tables[0] 或者DataSet.Tables["aa"]就是你想要的dt
你的这段代码和我的有什么区别么? dt.Load(reader);
我的就是这段不能用,reader不能填充到datatable中去。
没有错啊。。我把dt.Load(reader);换成循环一个一个输出reader中的值是可以的。但是要直接导进去就不行了。