把SqlDataReader中的数据弄到DataTable中

gold_star85 2009-07-17 03:04:05
书上的方法我知道,就是利用datareader.GetSchemaTable()读出插入列名以及列类型,然后利用dr.Read(),一行一行的循环读数据到datatable里面.
不过我看到好象SqlDataAdapter有一个方法,Fill(DataTable dt,IDataReader dr).我就想,如果我这样做:

SqlDataAdapter da = new SqlDataAdapter(); ///定义一个da

DataTable dt = new DataTable(); ///定义一个dt

然后利用

da.Fill(dt,datareader);

是不是就可以把datareader里面的数据,弄到 datatable 里面去了呢?


结果,运行提示: 不可访问,保护级限制......

难道,从datareader到datatable ,就只能用笨方法吗?????
...全文
3663 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小香蕉 2010-05-08
  • 打赏
  • 举报
回复 1
DataTable data = new DataTable();
data.Load(SqlDataReader, LoadOption.OverwriteChanges);

dataGridView1.DataSource = data;
天水三千 2009-12-15
  • 打赏
  • 举报
回复
你用了SqlDataReader为什么还要把SqlDataReader的数据转换DataTable呢,如果是想要DataTable就直接返回DataTable就可以啦,SqlDataReader也可以直接作为数据源绑定到控件中,真不明白楼主为什么要这样做。
zgke 2009-07-17
  • 打赏
  • 举报
回复
如果一定到DataReader实例了 只有写循环去创建TABLE的类和行了.
Wayne 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gold_star85 的回复:]
另外,老兄,你看清我的需求:把SqlDataReader中的数据弄到DataTable中,不是把SqlDataAdapter 中的数据弄过去......
[/Quote]
你如果有了SqlDataReader对象,那不就很好办了么。。
DataTable有个Load方法,传入SqlDataReader对象就行了。。
看你回复了这么多,越来越不理解咯。。
cooolchen 2009-07-17
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
cooolchen 2009-07-17
  • 打赏
  • 举报
回复
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["AdventureWorksConnectionString"].ConnectionString);
con.Open();
string str = "SELECT * FROM Person.[Address] ";
SqlCommand cmd = new SqlCommand(str,con);
SqlDataReader sdr = cmd.ExecuteReader();
SqlDataAdapter sda = new SqlDataAdapter();
myclass my = new myclass();
DataTable dt = new DataTable();
my.MyFill(dt, sdr);
con.Close();

this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}

public class myclass : System.Data.Common.DbDataAdapter
{
protected override int Fill(DataTable dataTable, IDataReader dataReader)
{
return base.Fill(dataTable, dataReader);
}

public int MyFill(DataTable dataTable, IDataReader dataReader)
{
return Fill(dataTable, dataReader);
}
}
}
gold_star85 2009-07-17
  • 打赏
  • 举报
回复
我在线等啊~~~~~谁给我帮帮忙.
Wayne 2009-07-17
  • 打赏
  • 举报
回复 1

SqlCommand com = new SqlCommand(sql, conn);
SqlDataReader dr = com.ExecuteReader();
DataTable dt=new DataTable();
dt.Load(dr);

这样就可以了。。
gold_star85 2009-07-17
  • 打赏
  • 举报
回复
我也没想着往DataReader里面写数据,我想把它里面的数据读出来,读到dataTable里面.有没有简单的方法???
zhang_zhen12 2009-07-17
  • 打赏
  • 举报
回复
DataReader是不是只读 没法往里写数据
gold_star85 2009-07-17
  • 打赏
  • 举报
回复
另外,老兄,你看清我的需求:把SqlDataReader中的数据弄到DataTable中,不是把SqlDataAdapter 中的数据弄过去......
zhang_zhen12 2009-07-17
  • 打赏
  • 举报
回复
sqlDataAdapter sda = new SqlDataAdapter("select * from Couse",con);
DataSet ds = new DataSet();
sda.Fill(ds);
DataTable dt = new DateTable();
dt = ds.Table[0];
gold_star85 2009-07-17
  • 打赏
  • 举报
回复
da.Fill(dt,datareader);
就是这一句.
十八道胡同 2009-07-17
  • 打赏
  • 举报
回复
结果,运行提示: 不可访问,保护级限制......

哪句出问题?
十八道胡同 2009-07-17
  • 打赏
  • 举报
回复
可以参考
// method 2
SqlDataAdapter myCommandd = new SqlDataAdapter("select * from Couse", objConnection);
DataSet ds = new DataSet();
myCommandd.Fill(ds, "Couse");
DataTable dt = ds.Tables["couse"];
Console.WriteLine(dt.Columns[0].ToString());
Console.WriteLine(dt.DefaultView.Count);


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/LCL_data/archive/2009/04/30/4139145.aspx

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧