C# 如何使用sql中的表数据填充gridview
我想用SQL中的表数据填充gridview。我试图返回我的SqlDataReader对象并将其用作我的数据源,但是我得到了一个错误,即读卡器已经关闭。我想将其转换为一个数据集并返回一个数据集,但我找不到一种简单的方法将行数据转换为数据集。我还读到数据集在.NET3.5/4.0中已经过时了,这是真的吗 这是我的数据层方法。如果我能返回一些可用的数据源,那就太棒了:C# 如何使用sql中的表数据填充gridview,c#,asp.net,.net-3.5,C#,Asp.net,.net 3.5,我想用SQL中的表数据填充gridview。我试图返回我的SqlDataReader对象并将其用作我的数据源,但是我得到了一个错误,即读卡器已经关闭。我想将其转换为一个数据集并返回一个数据集,但我找不到一种简单的方法将行数据转换为数据集。我还读到数据集在.NET3.5/4.0中已经过时了,这是真的吗 这是我的数据层方法。如果我能返回一些可用的数据源,那就太棒了: public SqlDataReader GetSites() { SqlConnection sqlCon = null;
public SqlDataReader GetSites()
{
SqlConnection sqlCon = null;
SqlDataReader rdr = null;
try
{
sqlCon = new SqlConnection(StoredProcedures.conString);
sqlCon.Open();
SqlCommand cmd = new SqlCommand("GetSites", sqlCon);
cmd.CommandType = CommandType.StoredProcedure;
rdr = cmd.ExecuteReader();
return rdr;
}
finally
{
if (sqlCon != null)
{
sqlCon.Close();
}
//if (rdr != null)
//{
// rdr.Close();
//}
}
}
我建议使用带有类型化表适配器的类型化数据集。将新的类型化数据集添加到项目中,并将表从VisualStudio中的服务器资源管理器直接放到类型化数据集中,然后对其进行配置。然后可以使用该类型的数据集作为datagrid的数据源我建议使用带有类型表适配器的类型化数据集。将新的类型化数据集添加到项目中,并将表从VisualStudio中的服务器资源管理器直接放到类型化数据集中,然后对其进行配置。然后,您可以使用该类型的dataset作为datagrid的数据源正如Carlos Munoz所述,您关闭了sql连接。您需要打开SQL连接以便读取器读取。简单地评论一下
if (sqlCon != null)
{
sqlCon.Close();
}
你应该没事的
另一种选择是使用我更喜欢的SqlDataAdapter
这里有一个例子
public static DataSet GetDataSet(string sql, DatabaseType database)
{
using ( var connection = new SqlConnection( GetConnectionString(database) ) )
{
using (var adapter = new SqlDataAdapter(sql, connection))
{
var temp = new DataSet();
adapter.Fill(temp);
return temp;
}
}
}
只需将数据网格的数据源设置为返回的数据集表
DGV.DataSource = DatabaseFunction.GetDataSet(sql, DatabaseType.Outage).Tables[0].DefaultView;
正如Carlos Munoz所说,您关闭了sql连接。您需要打开SQL连接以便读取器读取。简单地评论一下
if (sqlCon != null)
{
sqlCon.Close();
}
你应该没事的
另一种选择是使用我更喜欢的SqlDataAdapter
这里有一个例子
public static DataSet GetDataSet(string sql, DatabaseType database)
{
using ( var connection = new SqlConnection( GetConnectionString(database) ) )
{
using (var adapter = new SqlDataAdapter(sql, connection))
{
var temp = new DataSet();
adapter.Fill(temp);
return temp;
}
}
}
只需将数据网格的数据源设置为返回的数据集表
DGV.DataSource = DatabaseFunction.GetDataSet(sql, DatabaseType.Outage).Tables[0].DefaultView;
如果要将dataGridView中所做的更改更新回SqlDatabase,则应使用SqlCommandBuilder!比你能写的还要多:
dataAdapter.Update(dataSet);
如果您想使用新的东西,可以使用SqlMetal工具生成与您的SqlDatabase对应的对象模型。这将生成具有成员的类,因为表是您的dataabse。之后,使用LINQ查询,该查询用作dataGeidView的数据源
如果要将dataGridView中所做的更改更新回SqlDatabase,则应使用SqlCommandBuilder!比你能写的还要多:
dataAdapter.Update(dataSet);
如果您想使用新的东西,可以使用SqlMetal工具生成与您的SqlDatabase对应的对象模型。这将生成具有成员的类,因为表是您的dataabse。然后,使用用作dataGeidView数据源的LINQ查询。是的,在finally语句中关闭datareader。是的,在finally语句中关闭datareader。我喜欢类型化的数据集。使用表适配器自动生成的东西非常漂亮。谢谢,我喜欢类型化的数据集。使用表适配器自动生成的东西非常漂亮。谢谢,我用了一些非常接近这个的东西,我用了一些非常接近这个的东西。