C#数据库应用编程探析

2014-09-24 00:07柴君
无线互联科技 2014年7期
关键词:数据源语句代码

柴君

摘要:C#数据库程序设计是基于.NET平台的,在应用程序需要访问数据库时使用ADO.NET来实现数据库访问。本文在简介ADO.NET的基础上,重点探析ADO数据库编程的应用步骤及相关技术,从而使学生在完成面向对象C#和数据库课程的学习后,能有一个两门课程的结合点。

关键词:C#;ADO.NET;数据库编程在本学院软件技术专业的课程体系当中,面向对象课程和数据库课程在同一个学期中开设。其中的面向对象课程以C#语言为依托,重点学习面向对象的实现技术,而数据库以SQL Server为依托,重点学习T-SQL语句实现的增删改查,两门课程相对比较独立。为了有效地将两门课程结合起来,在完成主体知识学习之后的集中实训环节,集中进行C#数据库应用编程的练习,加深学生对这两门课程的理解程度。

1ADO.NET概述

ADO.NET是支持数据库应用程序开发的数据访问中间件,是.NET平台的重要组成部分,它主要用于解决WEB和分布式应用程序的问题,是由.NET Framework中的一组类或命名空间组成的[1]。

.NET Framework数据提供程序用于连接到数据库、执行命令和检索结果,它涵括了以下5个核心对象:

⑴Connection对象:建立与特定数据源的连接。

⑵Command对象:对数据源执行命令。

⑶DataReader对象:从数据源中读取只进且只读的数据流。

⑷DataAdapter对象:用数据源填充DataSet并解析更新。

⑸DataSet对象:数据容器

在C#数据库应用中要使用ADO.NET相关功能时,只需将System.Data命名空间引入到代码中,该命名空间下有包含OleDb、ODBC、SqlClient、Common、SqlTypes、Sql、ProviderBase等常用子命名空間,根据编程的需要引入相应的子命名空间到程序中即可。

2数据连接对象Connection

Connection对象代表与数据源的唯一会话,如果是客户端/服务器数据库系统,该对象可以等价于到服务器的实际网络连接。在不同的数据提供者内部,Connection对象的名称是不同的,在SQL Server DATA Provider中称为SqlConnection。

Connection对象应用的一般步骤如下:

⑴创建连接字符串

⑵创建Connection类型的对象

⑶打开数据源的连接

⑷执行数据库的访问操作代码

⑸关闭数据源连接

以下代码就是对上述应用步骤的体现:

using System.Data.SqlClient;//引入命名空间

string connStr = "server=.;uid=sa;pwd=sa;database=myDB"; //创建连接字符串

SqlConnection conn = new SqlConnection(connStr); //创建连接对象

……

if (conn.State == ConnectionState.Closed)

{ conn.Open(); } //打开数据库连接

……//执行数据库的访问操作代码

if (conn.State == ConnectionState.Open)

{ conn.Close();} //关闭数据连接

3执行数据库命令对象Command

当建立与数据源的连接后,可以使用Command对象来执行命令并从数据源中返回结果。可以使用Command构造函数来创建命令,该构造函数采用在数据源、Connection对象和Transaction对象中执行的SQL语句的可选参数。

SqlCommand对象对于数据库操作的方法中ExecuteReader()方法是比较常见的,通过DataReader类型的对象,应用程序能够获得执行SQL查询后的结果集[2]。示例如下:

SqlCommand cmd = new SqlCommand("select * from myTable",conn);

SqlDataReader dr = cmd.ExecuteReader();

//以上代码出现在创建连接对象之后,其中的参数conn就是之前所创建的连接对象

以上代码调用了SqlCommand的ExecuteReader()方法将查询的结果赋给了一个SqlDataReader对象dr。而如果要对数据进行插入、修改、删除操作和其他没有返回结果集的SQL语句,则选用方法ExecuteNonQuery()进行操作。

4数据读取器对象DataReader

使用DataReader对象能够从数据库中检索只读、只进的数据流。查询结果在查询执行时返回并存储在客户端的网络缓冲区,直到DataReader对象的Read()方法发出读取请求。DataReader提供未缓冲的数据流,使得数据源中返回的结果得以有效地顺序处理,可以提高应用程序性能,并且在默认情况下一次只在内存中存储一行数据,以减少系统开销,因此DataReader对象在检索大量数据时应用就显得非常合适和重要。

示例如下:

…… //按前述方法创建数据库连接、创建数据库命令并打开数据库连接

SqlDataReader dr = cmd.ExecuteReader();

if (dr.Read() == true)//输出结果集中的各个字段

{Response.Write(dr["ID"].ToString);

……}

…… // 关闭数据库连接,关闭DataReader对象

代码中采用了直接根据字段名“dr[“ID”]”的形式访问结果集,也可以通过for循环,利用FieldCount属性和GetValue()方法,依次访问数据集的字段。

5数据适配器对象DataAdapter

DataAdapter用于从数据源检索数据并填充DataSet中的表,还可将DataSet的更改解析回数据源。DataAdapter使用Connection对象连接到数据源,并使用Command对象从数据源检索数据以及将更改解析回数据源。

以下示例反映了使用DataAdapter填充DataSet对象的步骤:

string connStr = "server=.;uid=sa;pwd=sa;database=myDB"; //数据库连接串

string sqlStr = "select * from myTable"; //检索语句串

SqlDataAdapter da = new SqlDataAdapter(sqlStr, connStr); //创建DataAdapter

DataSet ds = new DataSet();//创建DataSet

da.Fill(ds, "myTable"); //填充DataSet对象

6数据集对象DataSet

DataSet是ADO.NET最核心的成员之一,也是各种基于.NET平台开发数据库应用最常接触的类。它在实现数据库抽取数据过程中起关键作用,是从数据库完成数据抽取后的数据存放地,是数据源数据在内存中映射成的缓存。在完成数据连接和通过数据适配器填充DataSet对象之后,客户端再通过DataSet来获得所需数据,反之更新数据也一样,因此DataSet是在客户端实现读取、更新数据库等过程的中间部件。

以下代码是DataSet使用范例:

…… //创建DataAdapter、创建DataSet并填充的代码同前,省略

//给DataSet创建副本,操作对副本进行,以免因误操作损坏数据

DataSet dsCopy = ds.Copy();

DataTable dt = ds.Table("myTable");

…… //对DataTable中的DataRow和DataColumn对象进行操作

da.Update(ds, "myTable"); //最后将更新提交到数据库中

7结语

前文介绍了ADO.NET中主要的数据库访问和操作对象,讲述了各对象的作用和使用方式。其中Connection对象主要负责连接数据库,Command对象主要负责生成并执行SQL语句,DataReader对象主要负责读取数据库中的数据,DataAdapter对象主要负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable,而DataSet对象主要负责存取和更新数据。

在每一小节中也给出了C#中数据库编程一般步骤和所使用的源代码,通过这种集中实训课程的学习环节,学生既能进一步熟悉C#编程语言,也能将数据库课程中的SQL语句融入到C#语句当中,使两门课程不再相互割裂,而是成为一个应用程序开发中不可或缺的两个有机组成部分。

[参考文献]

[1]陈建伟,张波.Visual C#2010程序设计教程[M].北京:清华大学出版社,2012:229.

[2]夏德宏.ADO.NET数据库技术应用浅析[J].计算机光盘软件与应用,2014年第05期:100-101.

猜你喜欢
数据源语句代码
重点:语句衔接
创世代码
创世代码
创世代码
创世代码
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法
如何搞定语句衔接题
分布式异构数据源标准化查询设计与实现