黑马程序员 c#学习11

Windows Phone 7手机开发.Net培训、期待与您交流!
1、DataSet离线结果集


    我们先回顾下前面学到的SqlDataReader 对象,这个对象存储的是我们的sql语句返回结果集,它和我们现在要学的DataSet的区别在于


    SqlDataReader 是连接相关的,查询结果是放在数据库服务器中,一旦我们的连接断开了,那么我们就不能使用这个结果了,而且,SqlDataReader的Read()方法只能读取当前游标指定的行,


    DataSet是断开连接式的,它是放在我们本地的内存中的,也就是说,一旦我们通过连接拿到了DataSet结果集,那么就算连接断开,我们也可以使用这个结果集,而且,在这个结果集中,我们还可以读取任意行的数据,而不必一条一条的去读取,


    SqlDataReader 在数据量大的时候比较有用,能有效减少对本机内存的占用,DataSet在数据量较小的时候能起到较好的效果,有效降低数据库服务器的压力。




    
2、使用DataSet


using ( SqlConnection conn = new SqlConnection ( "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" ) )
            {
                conn.Open ( );
                using ( SqlCommand cmd = new SqlCommand ( ) )
                {
                    
                    cmd.CommandText = "select * from T_user ";
                    cmd.Connection = conn;
                    SqlDataAdapter adapter = new SqlDataAdapter ( cmd );//创建一个适配器 ,
                    DataSet dataset = new DataSet ( );//创建一个DataSet
                    adapter.Fill ( dataset);//执行sql语句并将结果填充到dataset中
                    DataTableCollection dts = dataset.Tables; //获取dataset中的表集合
                    DataTable table = dts[0];//cmd.CommandText可以有多条命令,所以可能结果有多个表,但一般情况下我们不会写多条命令在一个commandtext中,所以我们只取集合中的第一个表
                    DataRowCollection  DR = table.Rows;//获取表中的行集合
                    for ( int i = 0; i < DR.Count; i++ )//遍历行集合
                    {
                        DataRow row = DR[i];    //取得一个行对象
                        int id = (int)row["d"]; //根据列名来取得当前行的值
                        string name =(string)row["name"];
                        int age = ( int ) row["age"];
                        MessageBox.Show (id+","+name+age ); 
                    }
                }
            }


    SqlDataAdapter类是一个适配器,用来与数据库与服务器进行通信,
    DataSet 就是 我们的数据集
    adapter.Fill ( dataset)这句代码的意义就是发送sql语句并取得结果,将结果存入dataset中


    dataset重要的属性 ,


      Tables属性,返回一个 DataTableCollection对象,这是一个表的集合,集合中的每个元素都是一个DataTable对象
     
    DataTable对象的属性


      Rows属性    返回一个 DataRowCollection对象,这是表中的所有行的集合, 每个元素都是一个DataRow 对象


      columns属性 返回一个 DataColumnCollection对象,这是表中的所有列的集合, 每个元素都是一个DataColumn 对象


    DataRow  具有一个索引器方法,可以根据列名,列号来获取当前行的列值。


   
3、配置文件


    由于程序中多次需要连接数据库,那么在建立连接的时候我们就需要多次书写连接字符串,不仅不方便,而且不容易修改,如果我们需要换一个数据库,那我们必须在程序中修改所有连接字符串,为了简化这种操作,我们引进了配置文件。


    配置文件是一个名称为app.config的文件,他是符合xml格式的。我们将连接字符串定义在这个配置文件中,当程序中需要连接字符串时,我们可以读取这个配置文件,当需要修改时,我们只需修改配置文件。


   注意,在使用配置文件前,我们必须将system.configuration程序集添加到当前项目的引用清单中,并且在当前代码中使用using system.configuration


  添加完之后,我们可以在配置文件中配置我们的连接字符串,有两种方式


<configuration>
  <connectionStrings>
    <add name="Dbconnection" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=123456"/>
  </connectionStrings>
  <appSettings>
    <add key="Dbconnection" value="Data Source=.;Initial Catalog=test;User ID=sa;Password=123456"/>
  </appSettings>
</configuration>


使用 <connectionStrings>节点和<appSettings>节点设置都行,但是一般使用<connectionStrings>节点


如上设置后,我们就可以在程序中读取连接字符串


使用<connectionStrings>节点的读取语法
   
string connstr = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;


使用了ConfigurationManager.ConnectionStrings的索引器方法,通过name属性来取得对应的ConnectionString


使用<appSettings>节点的读取语法


string connstr = ConfigurationManager.AppSettings["Dbconnection"];


取得连接字符串后,就可以使用SqlConnection conn = new SqlConnection(connstr)来创建一个连接对象了。
       Windows Phone 7手机开发.Net培训、期待与您交流!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值