编码实现>微软数据访问技术ADO.NET>使用DataSet>

编码实现>微软数据访问技术ADO.NET>使用DataSet>了解DataSet

DataSet就是一个内存数据库,DataSet内部以XML表示数据,不仅可以是数据库中数据的副本,还可以从XML,CSV文件导入记录。

DataSet的层次关系图


编码实现>微软数据访问技术ADO.NET>使用DataSet>使用DataTable实现内存表

ExpandedBlockStart.gif 使用DataTable实现内存表
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Data;
using  System.Data.SqlClient;

namespace  MemoryTable
{
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            
// 为DataTable指定一个表名,通过dt.TableName可以访问表名。
            DataTable dt  =   new  DataTable( " 内存表示例 " );
            
// 为DataTable添加架构信息,也就是创建字段。
            dt.Columns.Add( new  DataColumn( " 书名 " typeof ( string )));
            dt.Columns.Add(
new  DataColumn( " 书号 " typeof ( string )));
            DataColumn[] dcs 
=   new  DataColumn[ 2 ];
            dcs[
0 =   new  DataColumn( " 价格 " typeof ( decimal ));
            dcs[
1 =   new  DataColumn( " 出版社 " typeof ( string ));
            dt.Columns.AddRange(dcs);
            DataRow dr 
=  dt.NewRow();
            dr[
" 书名 " =   " C#编程系列 " ;
            dr[
" 书号 " =   " 12345-678-90 " ;
            dr[
" 价格 " =   45.3 ;
            dr[
" 出版社 " =   " 我的出版社 " ;
            dt.Rows.Add(dr);
            dt.Rows.Add(
new   object [] {  " C#编程系列二 " " 33455-333-333 " 45.7 " 我的出版社 "  });
            DisplayResult(dt);
            Console.ReadLine();
        }
        
static   void  DisplayResult(DataTable dt)
        {
            
for  ( int  i  =   0 ; i  <=  dt.Columns.Count  -   1 ; i ++ )
            {
                Console.Write(dt.Columns[i].ColumnName.PadRight(
10 ));
            }
            Console.WriteLine();
            
for  ( int  i  =   0 ; i  <=  dt.Rows.Count  -   1 ; i ++ )
            {
                
foreach  (DataColumn col  in  dt.Columns)
                {
                    Console.Write(dt.Rows[i][col].ToString().PadRight(
10 ));
                }
                Console.WriteLine();
            }
        }
    }
}


编码实现>微软数据访问技术ADO.NET>使用DataSet>把数据库中的数据填充到DataSet,以及访问DataSet中的数据

ExpandedBlockStart.gif 代码
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Data;
using  System.Data.SqlClient;
namespace  FillDataSet
{
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            
const   string  ConnectionStr  =   @" Data Source=.\SQLExpress;AttachDbFilename=|DataDirectory|\Northwnd.mdf;Integrated Security=True;user Instance=True; " ;
            
using  (SqlConnection conn  =   new  SqlConnection(ConnectionStr))
            {
                
try
                {
                    conn.Open();
                    DataSet ds 
=   new  DataSet();
                    SqlDataAdapter daOrders 
=   new  SqlDataAdapter( " Select top 2 * from orders " , conn);
                    daOrders.Fill(ds,
" orders " );
                    Console.WriteLine(
" 填充Orders表到DataSet成功 " );
                    SqlDataAdapter daProducts 
=   new  SqlDataAdapter( " Select top 2 * from Products " , conn);
                    daProducts.Fill(ds,
" Products " );
                    Console.WriteLine(
" 填充Products表到DataSet成功 " );
                    SqlDataAdapter daOrderDetails 
=   new  SqlDataAdapter( " Select top 2 * from [Order Details] " , conn);
                    daOrderDetails.Fill(ds,
" Order Details " );
                    Console.WriteLine(
" 填充Order Detail表到DataSet成功 " );
                    Console.WriteLine(
" 访问Orders表的第一行第一列记录值是: " );
                    Console.WriteLine(ds.Tables[
0 ].Rows[ 0 ][ 0 ]);
                    
// 使用CreateTableReader方法显示所有的数据
                    DisplayResult(ds);
                }
                
catch  (SqlException ex)
                {
                    Console.WriteLine(
" 在处理数据的过程中发生了错误:{0} " , ex.Message);
                }
                
finally
                {
                    
if  (conn.State  ==  ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
            Console.Read();
        }
        
static   void  DisplayResult(DataSet ds)
        {
            
using  (DataTableReader dtr  =  ds.CreateDataReader())
            {
                
do
                {
                    
if  (dtr.HasRows)
                    {                        
                        
while  (dtr.Read())
                        {
                            
for  ( int  i  =   0 ; i  <  dtr.FieldCount; i ++ )
                            {
                                Console.Write(dtr[i] 
+   "   " );
                            }
                            Console.WriteLine();
                        }
                    }
                    
else
                    {
                        Console.WriteLine(
" 没有数据 " );
                    }
                    Console.WriteLine(
" --------------------- "   +  Environment.NewLine);
                } 
while  (dtr.NextResult());
            }
        }
    }
}


DataView对象比DataTable对象更多的功能,通过使用DataView对象,可以实现对数据表的排序,搜索,帅选等功能。

 


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值