我希望返回一个不使用adapter.fill技术的数据表。
internal DataTable ConnectedSelect(string TableName, string[] Cols, string Condition)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(GenerateSelectStatment(TableName, Cols, Condition),con))
{
SqlDataReader rdr = cmd.ExecuteReader();
object[] temp = new object[rdr.FieldCount];
while (rdr.Read())
{
rdr.GetValues(temp);
dt.Rows.Add(temp);
}
}
}
return dt;
}
}
问题是我得到的输入数组长于此表中的col数。 表有4列 可能是什么问题呢? rows.add应该添加一个包含4个元素的行,这与输入相同。
答案 0 :(得分:2)
您可以使用load
DataTable
方法
dt.Load(rdr);
整个代码将是
internal DataTable ConnectedSelect(string TableName, string[] Cols, string Condition)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(GenerateSelectStatment(TableName, Cols, Condition),con))
{
SqlDataReader rdr = cmd.ExecuteReader();
if(rdr.HasRows)
dt.Load(rdr);
}
}
return dt;
}
}