Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1707332
  • 博文数量: 263
  • 博客积分: 1218
  • 博客等级: 少尉
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 02:33
文章分类

全部博文(263)

文章存档

2020年(12)

2019年(2)

2018年(10)

2016年(1)

2015年(20)

2014年(115)

2013年(46)

2012年(37)

2011年(20)

分类: 嵌入式

2012-03-08 10:37:12

我的另外一篇通过DataTable.Load(DataReader r)是最方便的。这里记录一下用过的方法,相比来说没Load方法好用。
一、通过GetSchemaTable()。从SQL里面查询到结果以后,怎么知道有几个字段及字段的类型呢?用DataReader的GetSchemaTable()方法来获得查询结果表的结构。这样来建一张表。可查MSDN来看一下GetSchemaTable()方法的功能,及用处。它可得到DataReader的各字段类型,名称等等。MSDN里面的那个
例子运行一下就很清楚它是干什么的了。它会获得数据库表中各字段的名称和数据类型,等。然后放入一张表中。
下面来写方法吧:
           string source = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=E:\\MyProgram\\CsAccess\\ConnectAccess\\data.mdb";            
            using (OleDbConnection conn = new OleDbConnection(source))
            {
                conn.Open();
 /*用DataReader来填充DataTable*/
                OleDbCommand cmd = new OleDbCommand(select, conn);             
                OleDbDataReader reader = cmd.ExecuteReader();  /*创建DataReader*/
                DataTable TSelectReSoult = new DataTable();  /*存放要在Gridview里面显示的最后结果*/
                DataTable TSchema = reader.GetSchemaTable();  /*存放查询结果的各字段属性(如 ColumnName字段名称DataType字段类型ColumnSize*/

                foreach (DataRow ilRow in TSchema.Rows)/*建表*/
                {
                    /*获取这个字段的类型*/
                    Type TilRowType = Type.GetType(ilRow["DataType"].ToString());
                    TSelectReSoult.Columns.Add(ilRow["ColumnName"].ToString(), TilRowType);
                }

                for (int il = 0; reader.Read() &&il<100; il++)/*将查询的结果前100条数据插入到SelectResoultT中*/
                {
                    DataRow r = TSelectReSoult.NewRow();
                    for (int jl = 0; jl < TSelectReSoult.Columns.Count; jl++)
                    {
                        r[jl] = reader[jl];
                    }
                    TSelectReSoult.Rows.Add(r);
                }

                reader.Close();       /*关闭reader*/
                dataGridView1.DataSource = TSelectReSoult;
                conn.Close();
 
代码是从程序中截取出来的,如果有些小地方不完整。欢迎指出,一定修改。
阅读(8634) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~