当前位置:编程学习 > asp >>

[MrYoung教程:易学之道]2ADONET基础之数据展现

一、前文回顾
  在本系列第一篇文章中我们介绍了关系型数据库的概念,然后学习了如何使用企业管理器建立数据库表和添加数据,基础的SQL语句:查询,增加,修改,删除的用法,最后用我们讲解的知识实现了一个WINFORM的登陆窗体。

二、概述
  这将是[MrYoung教程:易学之道]ADONET基础系列文章的第二篇,在本篇中我们来关注数据展现问题,如何从数据库中取出数据并展示到我们的程序中,其中将讲述DATASET,SQLDATAADAPER和DATAGRIDVIEW控件。

三、主要内容
  3.1 USING的使用。

  3.2 DataSet介绍。

  3.3 SqlDataAdapter介绍。

  3.4 控件的数据绑定。

四、USING使用
  4.1 Using(),作为语句,它主要用于定义一个范围,表示在此范围的末尾将释放对象。比如上文中我们在实例化SqlConnection对象,在使用完以后应该显示的调用该对象的CLOSE方法确保关闭对象,现在我们可以使用USING来实例化它,这样当使用完以后系统会帮我们自动释放掉该对象,如:
 
 
view sourceprint?1 //在括号内实例化对象,那么在花括号的代码执行完毕后系统将帮我们释放sqlcon对象  

2 using (SqlConnection sqlcon = new SqlConnection(connectionString)) 

3 { 

4 sqlcon.open(); 

5 //DoSomeThing; 

6 }

view sourceprint? 

  4.2 using 语句确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此,其实try..catch也是运用的USING原理,感兴趣的大家可以去详细了解下。

  4.3 强调调用Dispose使用using,强调异常处理使用try..catch

  4.4 在学习了USING以后,我们来讲我们的BaseOperate重写,将所有方法和字段改为静态static,使用static的成员不用实例化即可直接使用,首先声明一个静态字符串connectionString用于保存字符串连接,然后写一个静态方法getStrcon用于获取字符串连接,声明一个静态构造函数,以便在调用本类时确保给connectionString正确赋值,代码如下:

 

 


view sourceprint?01 /// <summary> 

02  /// 数据库连接字符串 

03  /// </summary> 

04  public static string connectionString =null; 

05  

06 /// <summary> 

07 /// 构造函数 

08 /// </summary> 

09  static BaseOperate() 

10  { 

11      connectionString = getStrcon(); 

12  } 

13  /// <summary> 

14  /// 获取数据库连接字符串 

15  /// </summary> 

16  /// <returns></returns> 

17  public static string getStrcon() 

18  { 

19      return "packet size=4096;data source=127.0.0.1;persist security info=True;initial catalog=Db_Example;user id=sa"; 

20  }

 

   接着把我们上文的getcom方法也改为静态方法,以便在使用完该方法后系统自动帮我们释放资源和对象:

 

view sourceprint?01 /// <summary> 

02 /// 执行SQLCOMMAND命令 

03 /// </summary> 

04 /// <param name="str_sql">要执行的SQL语句</param> 

05 public static void getcom(string str_sql) 

06 { 

07     using (SqlConnection sqlcon = new SqlConnection(connectionString)) 

08     { 

09         using (SqlCommand sqlcom = new SqlCommand(str_sql, sqlcon)) 

10         { 

11  

12             sqlcon.Open(); 

13             sqlcom.ExecuteNonQuery(); 

14  

15         } 

16     } 

17 }

 

  而对于getread方法,因为要返回SqlDataReader对象,并且它是这样来实例化的sqlcom.ExecuteReader(CommandBehavior.CloseConnection),所以我们不使用USING,而是由调用者在使用完成后显示的关闭连接,同样我们也改写他为静态方法如下:

 

view sourceprint?01 /// <summary> 

02 /// 创建SQLDATAREADER对象 

03 /// </summary> 

04 /// <param name="str_sql">要执行的SQL语句</param> 

05 /// <returns>返回SQLDATAREADER对象</returns> 

06 public static SqlDataReader getread(string str_sql) 

07 { 

08     SqlConnection sqlcon = new SqlConnection(connectionString); 

09     SqlCommand sqlcom = new SqlCommand(str_sql, sqlcon); 

10     sqlcon.Open(); 

11     SqlDataReader sqlread = sqlcom.ExecuteReader(CommandBehavior.CloseConnection); 

12     return sqlread; 

13  

14 }

五、DATASET
  5.1 DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。 我们简单来讲,DATASET就是我们执行数据库查询语句SELECT后返给我们的结果集,他包含了我们查询的结果,并且是储存在内存中的。但DATASET并不仅限于数据库的查询。

  5.2 对于任何数据源,它都提供一致的关系编程模型。在DataSet中既定义了数据表的约束关系以及数据表之间的关系,还可以对数据表中的数据进行排序等。

  5.3 独立性,既可以以离线方式,也可以以实时连接来操作数据库中的数据。


如上图所示,一个DATASET可以包含多个DATATABLE数据表,而一个数据表相当于我们数据库中的表,如TB_USERINFO,他具有行和列,当我们执行数据库查询后就会得到一个DATASET,如果我们查询的是TB_USERINFO的信息,那么在DATASET中就会存在一个表,他的序列为0(注意,一般我们都是已0开始计数,而不是1),表示为DATASET.TABLE[0]。在SQL中,我们可以通过SqlDataAdapter类执行查询,得到一个DATASET对象。
六、SqlDataAdapter 
  6.1 表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接

 

  6.2 SqlDataAdapter 构造函数 (String, SqlConnection),他接受一个查询SQL的命令和一个数据库连接对象。

  6.3 DbDataAdapter.Fill 方法 (DataSet),通过此方法,我们即可填充传入的DATASET形参从而获取查询结果。

  下面我们来扩展我们的BaseOperate类,增加一个查询方法,返回一个DATASET,如下所示

view sourceprint?01 /// <summary> 

02 /// 执行查询语句,返回DataSet 

03 /// </summary> 

04 /// <param name="SQLString">查询语句</param> 

05 /// <returns>DataSet</returns> 

06 public static DataSet getds(string str_sql) 

07 { 

08     //使用USING 

09     using (SqlConnection sqlcon = new SqlConnection(connectionString)) 

10     { 

11         //实例化一个DATASET对象 

12         DataSet ds = new DataSet(); 

13         sqlcon.Open(); 

14         //实例化一个SqlDataAdapter对象 

15         SqlDataAdapter sqldata = new SqlDataAdapter(str_sql, sqlcon); 

16         //填充ds 

17         sqldata.Fill(ds); 

18         return ds; 

19     } 

20 }

 

七、COMBOBOX的数据绑定
  在我们前文的登录界面中,我们的用户名需要

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,