SqlDataReader无法加载到表中

时间:2015-02-04 20:18:24

标签: c# sql sql-server

我有一个来自SQL Server命令的SqlDataReader,并希望我使用此代码在DataDridView中显示:

SqlDataReader dr=product.RetriveDetailsOfOneProduct();
DataTable dt = new DataTable();
dt.Load(dr);
DataGrid.DataSource = dr;

我使用我的SqlDataReader有行的断点检查了它,但是当它加载到DataTable时,它是空的(没有行)

我该如何解决这个问题?

它是我的DataAccess类的函数,其中返回SqlDataReader

internal SqlDataReader RetriveDetailsOfOneProduct(product product)
{
     string RetriveQuery = string.Format("SElect person.F_Name as N'Name ',person.L_Name as N'LastName',borrow.Person_Identity as N'Identity',borrow.T_Date as 'Date1', borrow.B_Date as 'Date2' from BorrowTable borrow Inner join PersonTable person on borrow.Product_Name=N'{0}' and person.Person_identity=borrow.Person_Identity ", product.Productname);

     SqlCommand cmd = new SqlCommand(RetriveQuery, conn);
     // conn.Close();  //if i close the Connection(conn) it runs into error
     return(cmd.ExecuteReader());
}

2 个答案:

答案 0 :(得分:3)

您的问题是您要将数据源设置为数据读取器而不是数据表。

DataGrid.DataSource = dr;

应该是

DataGrid.DataSource = dt;
DataGrid.DataBind();

答案 1 :(得分:2)

分配数据表,而不是datareader ......

DataGrid.DataSource = dt;