ADO.net数据库
ADO.net数据库(精选9篇)
ADO.net数据库 第1篇
1 简述ADO.NET数据访问技术
ADO.NET数据访问技术为各种不同的数据源提供了一些公共的类库用于操作数据源中的数据。通常情况下,他可以与许多类型的对象交互,不仅有存储在数据库中的数据:例如企业及数据库Oracle、Microsoft SQL Server、BM DB2;桌面数据库如Access等等,除了这些以外,它也可以访问其它的非数据库文件。
面向对象编程的好处是可以把各种复杂的功能进行封装,然后对封装的对象定义好使用的接口,封装的对象为用户提供一些方法和属性,用户通过操作这些方法和属性来操作数据源。它的优点是可以连接任何类型的数据库,只要为这些数据源编写好相应的连接通道、驱动程序、适配器等,就可以利用ADO.NET从数据源中操作相应的数据。对于数据库的管理员来说,他可以授予用户使用数据视图的权限,那么ADO.NET也可以把数据通过视图读出来并显示,安全性也非常高。
ADO.NET在处理数据源时,他可以处理断开连接的数据集,在用户重新访问数据时在建立相应的连接,传送数据源中的数据,传送完毕后关闭他们之间的连接,在这种情况下,操作者还可以修改这些数据,修改的数据不会在数据源中立即更新,只有操作者提交了这些对数据库的修改之前,才会去重新连接数据源,这样做的好处是执行效率非常高,可延展性好,节约了系统资源,否则当每个用户建立的会话连接一直打开的话,就会占用非常多的系统资源,而系统资源是非常宝贵的,所以这种方式能够使数据服务器更高效的处理数据。
总之,利用ADO.NET技术所提供的功能能够非常容易地读取各种数据源中的数据,减少程序员需要编写的大量程序代码。ADO.NET的对象模型共提供了五个非常重要的组件,这些组件分别可以连接数据源、对数据源执行SQL命令、对数据源中的数据提取并显示、缓存数据等等操作。下面我们就分别来介绍这五个对象
2 ADO.NET五大对象简介
2.1 Connection对象,负责对数据库进行连接
Connection对象的功能是与数据库之间建立连接,只有成功连接数据库,才能和数据库进行交互。当他和数据进行连接时,需要提供数据库服务器的名称或地址、数据库名称、用户名、用于登录数据库的密码以及其它参数,他工作在ADO.NET的最底层,运行时通过Command对象进行调用。Connection对象成功连接数据库后,就可以通过command对象对数据库执行SQL语句。在对数据源的操作中,它是最重要的对象,无论对数据源的增、删、改、查等操作,都必须要首先与他成功建立连接,它是与数据库之间交流的一座桥梁。
2.2 Command对象,负责对数据库执行命令
成功与数据源建立连接后,利用Command对象的方法就可以完全操控数据源。其中,对于数据库的基本操作:查询、新增、修改、删除等指令,以及执行数据库中的存储过程和函数就变得更加容易。Command对象在执行前必须要首先使用Connection对象与数据源建立好一条连接通道,然后执行各种所需的SQL命令。Command对象对于数据库来说使用最多的方法有Execute Reader()方法,用于读取一个表的记录,但是不能进行写入数据的操作;Execute Scalar()方法,只能读取到一条数据记录,也不能执行写入操作;Execute Non Query()方法,可以对数据进行读写的双向操作。
2.3 Data Reader对象,负责对数据库执行命令,但只能从数据库中按顺序读取数据
在数据库的操作中,我们需要按顺序来读取数据库中的记录时,就可以使用Data Reader对象。这个对象可以按要求从数据库中每次取一条记录,并且是从上向下地循环读取,并且对数据只能是只读的操作,这种读取的优点是节省资源,效率高。因为他对数据的操作方法较简单,如果你想对数据进行复杂的操作,建议使用Data Set对象。
2.4 Data Set对象,负责对数据库执行命令,及缓存数据等
Data Set对象是数据在内存中的表示形式,他可以把数据库中需要查询到的数据全部保留起来,而且可以包括整个数据库。由于他在对数据库进行操作后(包括获取与更新数据),就立即断开与数据库的连接,所以执行效率比较高,程序员可以使用这个对象及时高效地访问和操作数据库中的数据。由于他的离线特性,也更加适合用于接收大数据量的信息。
2.5 Data Adapter对象,也叫数据适配器,是数据集和数据库之间联系的桥梁
Data Adapter对象主要用于提取数据源中的数据,并将这些数据放到Data Set对象的Data Table中,而且他还可以将数据的改动写回到数据库,他的操作不需要通过ADO.NET中的Command对象来执行。Data Adapter对象工作的过程是首先需要建立并初始化一个Data Table即数据表,然后对连接的数据源执行SQL命令,同时与Data Set对象相结合进行存取数据的操作。他是Data Set对象的操作核心,是这个对象与数据库之间进行沟通的桥梁。
3 ADO.NET数据库编程实例
首先,我们假设在本机已经建立好了一个Sql Server2005的数据库服务,其中Sql Server使用身份验证,登录名:sa,密码:caifox.。我们利用管理员身份到数据库管理器中新建一个Library(图书馆)数据库,并且新建一张Book表。在这张表中添加下面字段:Book_Id(图书编号),Book_Name(书名),Author_Name(图书的作者姓名),Publisher(出版社),字段添加完成后大家可以自行往这个表中添加几条数据作为本实例制作过程中来使用。
在这个实例中,我们使用vs2010控制台程序来演示,启动vs2010后建立一个C#的控制台程序并命名为Ado_net Study。
在Program.cs程序中首先引入下面两行:
using System.Data;//包含数据集/数据表/数据行/类
using System.Data.Sql Client;//包含连接/命令/适配器/读取器/类
在命名空间namespace Ado_net Study的class Program类中新建一个静态连接字符串便于下面新建的对数据库操作的函数引用字符串变量:
static string con Str=@"Data Source=.;Initial Catalog=Library;User ID=sa;Password=caifox;";
3.1 测试数据库连通函数
在class Program类中新建下面的测试函数
public static void Test Connection()
{Sql Connection conn=new Sql Connection(con Str);//连接数据库通道对象
conn.Open();//打开数据库连接通道
conn.Close();//关闭数据库连接通
Console.Write Line("数据库连接成功了");
}
建立完成后在主程序中直接调用est Connection()函数就可以测试数据是否连接成功,后面的几个函数完成后都可以像这个函数一样在下面的主程序中直接调用即可,所以后面的几个对数据库操作的函数就不写下面的代码了,大家可以自行测试。
static void Main(string[]args)
{
Test Connection();//调用测试连接的函数
Console.Read Key();
}
3.2 新增数据库记录函数
public static void Add Record()
{int res=-1;//准备接受新增受影响的行数
Sql Connection conn=new Sql Connection(con Str);//连接数据库通道对象
string sql Str="insert into Book(Book_Id,Book_Name,Author_Name,Publisher)values(2,'ADO.NET从入门到精通','张华贵','大连蓝天出版社')";//准备新增的sql命令
Sql Command cmd=new Sql Command(sql Str,conn);//新建命令对象,并且告诉它怎么连接数据库以入执行什么命令
conn.Open();//打开数据库连接通道
res=cmd.Execute Non Query();//此方法负责增删改,返回受影响行数(int)
conn.Close();//关闭数据库连接通
if(res>0)
{Console.Write Line("新增成功啦!");}
else{Console.Write Line("新增失败啦!");}}
}
3.3 删除数据库记录函数
public static void Del Record()
{int res=-1;//准备接受新增受影响的行数
Sql Connection conn=new Sql Connection(con Str);
string sql Str="delete book where Book_Id=1";//准备删除的SQL命令,update更新语句使用同一方法
Sql Command cmd=new Sql Command(sql Str,conn);conn.Open();
conn.Open();
res=cmd.Execute Non Query();conn.Close();
conn.Close();
if(res>0)
{Console.Write Line("删除成功啦!");}
else{Console.Write Line("删除失败啦!);}
}
3.4 查询单个数据库记录函数
public static void Query Single(){Sql Connection con=new Sql Conn
{Sql Connection con=new Sql Connection(con Str);string sql Str="select*from Book";
string sql Str="select*from Book";
Sql Command cmd=new Sql Command(sql Str,con);con.Open();
con.Open();
object obj=cmd.Execute Scalar();//调用此方法,获得查询语句在数据库执行后得到的结果集的第一个单元格的值,返回类型是object
con.Close();
Console.Write Line(obj.To String());//在输出结果集的第一个单元格的值
}
3.5 查询多行数据--通过Data Reader类来读取的函数
public static void Query List By Col Name(){Sql Connection conn=new Sql Connection
{Sql Connection conn=new Sql Connection(con Str);
string sql Str="select*from Book";Sql Command cmd=new Sql Command
conn.Open();
conn.Open();
Sql Data Reader dr=cmd.Execute Reader();//调用此方法获得一个读取器对象
if(dr.Has Rows)//判断记录集是否包含一行或多行,如果包含多行,则通过循环读取数据并输出到控制台
{
while(dr.Read())//Read方法,如果读到下一行数据,则返回true,而且dr本身就等于那一行数据{
Console.Write Line(dr["Book_Id"].To String()+"_"+dr["Book_Name"].To String()+"_"+dr["Author_Name"].To String()+"_"+dr["Publisher"].To String());}
}}
else Console.Write Line("无数据");
dr.Close();
conn.Close();
}
3.6 使用适配器读取数据的函数
public static void Query List By Adapter(){Sql Connection conn=new Sql Connectio
{Sql Connection conn=new Sql Connection(con Str);string sql Str="select*from book";
string sql Str="select*from book";
Sql Data Adapter da=new Sql Data Adapter(sql Str,conn);//这种方式不需要代码打开和关闭连接通道
Data Set ds=new Data Set();//创建数据集对象(程序端的临时数据库)
da.Fill(ds);//调用fill方法,填充数据集。
Data Table dt=ds.Tables[0];//获得数据集中的第一张表
for(int i=0;i
{
Data Row dr=dt.Rows[i];//将循环到的行拿出来给dr对象
Console.Write Line(dr[0].To String()+"__"+dr[1].To String());//通过下标获取一行的某列的值并输出
}
上面的几个函数包括了对数据库增、删、查、改的基本操作,我们只要把这些函数放到Main主函数里执行就可以看到输出结果。ADO.NET是与数据源交互的.NET技术,只要我们熟练掌握ADO.NET的五个对象,我们就可以很容易的操控数据源。
参考文献
[1]王宝祥.基于ADO.NET的数据库访问技术研究[J].计算机应用与软件,2004(2).
[2]孙三才,许薰尹.程序设计C#ASP.NET[M].北京:中国青年出版社,2001.
[3]Reilly D J.ASP.NET Web应用程序开发新思维[M].北京:清华大学出版社,2002.
ADO.NET数据库访问技术 第2篇
本篇文章主要介绍了ADO.NET数据库访问技术以及在线或离线访问数据库的实现步骤,有需要的朋友可以参考下
一. ADO.NET的定义
ADO.NET来源于COM组件库ADO(即ActiveX Data Objects),是微软公司新一代.NET数据库的访问模型,是目前数据库程序设计人员用来开发基于.NET的数据库应用程序的主要接口,它利用.NET Data Provider(数据提供程序)进行数据库的连接和访问,通过ADO.NET数据库程序能够使用各种对象来访问符合条件的数据库内容,让提供数据库管理系统的各个厂商可以根据此标准开放对应的.NET Data Provider,这样设计数据库应用程序人员不必了解各类数据库底层运作的细节,只要掌握ADO.NET所提供对象的模型,便可访问所有支持.NET Data Provider的数据库。
ADO.NET结构模型如下所示:
图1. ADO.NET结构模型
ADO.NET是一个类库,这些类提供了很多的对象,可用于完成数据库连接和增删查改等操作。其中包括如下五个对象: 1)Connection:用来连接数据库(SQL Server使用的是SqlConnection对象); 2)Command:用来对数据库执行SQL命令,如增删查改等操作; 3)DataReader:用来从数据库中返回只读数据,用数据源填充DataSet对象; 4)DataAdapter:与DataSet对象相结合使用,实现对数据库的控制; 5)DataSet:可看作离线时内存中的数据库; 这五个对象提供了两种读取数据库的方式; 第一种方式:使用Connection、Command、DataReader,其权限只能读取或查询数据库; 第二种方式:使用Connection、Command、DataAdapter、DataSet,其权限能进行各种数据库的操作。 ADO.NET读取数据库操作示意图:
图1. ADO.NET结构模型
二. 使用ADO.NET在线访问数据库的步骤(这里用的是SQL Server 数据库)
1. 连接数据库
直接上一段代码:
using System.Data.SqlClient;string source = ”server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa“; SqlConnection conn = new SqlConnection(source); conn.Open(); // 对数据库数据进行操作 conn.Close();
(1). 首先添加命名空间System.Data.SqlClient;
(2). 定义数据库连接字符串:
第一种方法:直接把数据库连接字符串存放在字符串对象中,如上代码所示;
第二种方法Web:将数据库连接信息存放在web.config配置文件中,然后通过使用ConfigurationStringSettings类进行调用。来个例子说明一下:
(a). 首先,在web.config配置文件的部分定义数据库连接信息:
(b). 在项目文件中,添加对Configuration的引用,在头部添加using System.Configuration。然后定义数据库连接字符串为:
代码如下:
string connstring = ConfigurationManager.ConnectionStrings[”myDatabase“].ConnectionString;
备注:必须添加对System.Configuration程序集的引用,才能解析上述代码中使用的ConfigurationManager类。
2. 创建数据库连接
1)创建Connection对象:
string conn = new SqlConnection(connString);
2)打开数据库: conn.Open(); 一般情况下,当在.NET中使用“稀缺”的资源时,如数据库连接、窗口或图形对象,最好确保每个资源在使用完毕后立即关闭。尽管.NET的设计人员实现了自动垃圾收集机制,垃圾最终会被回收,但仍需要尽可能早地释放资源,以避免出现资源匮乏的情况。 当编写访问数据库的代码时,因为使连接打开的时间略长于需要的时间,就可能影响其他会话。在极端的情况下,不关闭连接可能会使其他用户无法进入一整组数据表,极大地降低应用程序的性能。主要有两种方式可以确保数据库连接等类似的“稀缺”资源在使用完后立即释放。这两种方式如下: (1)第一种方式:采用try...catch...finally语句块 确保在finally中关闭任何已打开的连接。
try { // open the connection conn.Open(); // 对数据库数据进行操作 } catch (SqlException ex) { // log the exception } finally { conn.Close(); }
在给定的方法中可能会打开许多资源,这样try...catch...finally块的层次有时候不容易看清,
还有一种方式可以确保资源的关闭――using语句。 (2)使用using语句块
using(SqlConnection conn = new SqlConnection(connstring)){ // Open the connection conn.Open(); // 对数据库数据进行操作 }
无论块是如何退出的,using子句都会确保关闭数据库连接。
3. 创建数据库操作命令:
Connection对象与数据源建立连接后,使用Command对象对数据源执行查询、插入、修改和删除等操作。
(1) 创建SQL数据库操作命令: sqlQuery查询语句具体规则请详见我的系列文章:【读书笔记】SQL Server查询语句_邓智容 (2) 创建Command对象:
(a). 方法一:
代码如下:
SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = ”SQL语句“;
(b). 方法二:
SqlCommand command = new SqlCommand(”SQL语句“, conn);
备注: 1). SQL查询语句若含有C#程序的变量并以字符串形式连接,则应注意数据为非数字的变量应用单引号括起来; 2). 在SQL查询语句中使用参数化查询语句的话,譬如:
command.CommandText = ”SELECT * FROM myTable WHERE siteName=@siteName“;
当需要给该参数赋值时,可以使用Command对象建立参数对象,然后再赋值:
代码如下:
command.Parameters.Add(new SqlParameter(@siteName, siteName)); command.Parameters[”@siteName“].Value = ”#“;
备注: 在.Net Framework 2.0中SqlClient增加了AddWithValue(string parameterName, object value)方法。该方法简化了调用储存过程的输入参数过程,在运行时对所输入的数据类型进行判断,获取对应的数据库类型。 因此该方法在运行效率上比用 Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn)方法要低。 在效率要求较高的地方仍然建议使用Add()方法,其它场合可以使用AddWithValue()简化代码编写量。
4. 执行sqlQuery命令:
定义好命令后,就需要执行它。执行的语句有多种方式,这取决于要从命令中返回什么数据。Command类提供了下述可执行的命令: (1) ExecuteNonQuery() ―― 执行命令,但不返回任何结果。一般用于UPDATE、INSERT或DELETE语句中,其中唯一的返回值是受影响的记录个数。但如果调用带有输出参数的存储过程,该方法就有返回值。 (2) ExecuteReader() ―― 执行命令,返回一个类型化的IDataReader。是从数据源中选择某些数据的最简单快捷的方法。 (3) ExecuteScalar() ―― 执行命令,返回结果集中的第一行第一列的值。
5. 对数据库操作完毕后关闭数据库连接:
conn.Close();
三. 离线数据库访问
DataAdapter对象主要在Connection对象和DataSet对象之间执行数据的传输工作,将数据填充到DataSet对象中,也可把DataSet对象更新后的数据返回到数据源中,也可架构在Command对象上,通过CommandBuilding对象生成DataAdapter的Insert、Update和Delete等SQL操作命令。使用DataSet和DataTable对象访问数据源后,ADO.NET会自动离线,在内存中处理数据,如有修改数据的操作,将自动重新连接数据源,更新数据库。DataSet对象、DataAdapter对象与数据源之间的关系如下:
DataSet <--->DataAdapter <--->数据源
下面是使用DataAdapter进行离线数据库访问的操作步骤:
1. 创建DataAdapter、DataTable对象(使用的是SQL Server数据库)
代码如下:
SqlAdapter da = new SqlAdapter(”sqlQuery查询语句“, conn); DataSet = ds = new DataSet(); DataTable dt = new DataTable();
2. 将数据填充到DataTable对象
da.Fill(ds, ”TableName“); dt = ds.Tables[”TableName“];
3. 对DataTable中的数据进行处理 TataTable对象的属性和方法有:
名称属性/方法说明
Rows.Add()方法插入新数据行
Rows[n].Delete()方法删除第n行的记录
Rows.Count属性获取行数
Rows[i][”ColumnName“]属性获取第i行、列名为ColumnName的值
Rows[i][j]属性获取第i行、第j列的值
ADO.NET数据库访问探讨 第3篇
.NET Framework数据提供程序包含以下4个核心类:
1)Connection:建立与数据源的连接;
2)Command:对数据源执行操作命令,用于修改数据、查询数据和运行存储过程等;
3)Data Reader:从数据源获取返回的数据;
4)Data Adapter:用数据源数据填充Data Set,并可以处理数据更新。
Data Set是ADO.NET的断开式结构的核心组件。设计Data Set的目的是为了实现独立于任何数据源的数据访问,可以把它看成是内存中的数据库,是专门用来处理数据源中读出的数据;其优点是离线式,一旦读取到数据库中的数据后,就在内存中建立数据库的副本,在此之后的操作,知道执行更新命令为止,所有的操作都是在内存中完成。不管底层的数据库时哪种形式,Data Set的行为都是一致的;Data Set是数据表(Data Table)的集合,它可以包含任意多个数据表,而且每个Data Set中的数据表对应一个数据源中的数据表(Table)或者视图(View)。
操作步骤:
1 建立数据库
既然要提取数据,首先必须建立好数据库。只有建立了数据库,并对数据的格式进行严格的定义,才能对其进行操作。并且在编程的过程中要随时了解数据库里面数据的类型,这样才能进来避免函数在调用数据是出错。
2 配置web.config文件
这一步也是非常关键的一步,如果不对其进行配置,尽管建立了数据库,但是程序却不能找到相应的数据库,后期代码尽管正确,也会报错。
具体操作为:在网站中找到并打开相应的web.config文件,在里面找到
其中,Data Source表示SQL Server2005数据库服务器名称,Attach Db Filename表示数据库的路径和文件名,|Data Directory|表示网站默认数据库路径App_Data。当然,这是配置连接文件中的一种,还有其他的方式可以配置比如结合用户名和密码的。
3 利用Connection对象创建数据库连接
string sqlconnstr=Configuration Manager.Connection Strings["Connection String"].Connection String;
配置好web.config文件后,就能找到相应的数据库。但是要对数据库进行操作,必须先对其进行连接。
4 利用Command对象对数据源执行SQL命令
当连接完成,接下去就是对数据源中的数据进行操作(添加、删除、更新等)。这项工作由Command对象来完成。
Sql Command sqlcommand=new Sql Command();
//Command对象的属性赋值
sqlcommand.Connection=sqlconn;
sqlcommand.Command Text="delete from student where no=@no";//删除操作
sqlcommand.Command Text="insert into student(no,name,sex,birth,address,photo)values(@no,@name,@sex,@birth,@address,@photo)";//插入操作
sqlcommand.Command Text="select*from student";//选择操作
sqlcommand.Command Text="update_student";//更新操作
5 利用Data Reader对象读取数据源的数据
当完成对数据源中的数据进行操作后,接下来就要对操作后的数据进行读取。以便显示其结果。而Data Reader对象就是完成对数据源中的数据进行读取。
6 Data Set对象与Data Aapter对象配合,完成数据的查询和更新操作。
总之,编程过程是一个非常复杂的过程,如何系统化分析,让复杂问题条理化,简单化,这是编程人员特别是初学者应该遵循的一条颠扑不破的真理。理解和掌握事物内部的规律,严格按照问题的解决思路进行深入研究,能够使初学者迅速掌握编程方法,从而摆脱菜鸟进入程序员行列。
摘要:ASP.NET应用程序的数据访问是通过ADO.NET进行的,ADO.NET可以使Web应用程序从各种数据源中快速访问数据。从传统的数据库到XML数据存储,各种各样的数据源都连接到ADO.NET从而更灵活地访问数据,减少访问数据所需的代码,提高了开发效率和Web应用程序的性能。对于初学者来说,对ADO.NET数据库访问是非常头疼的问题,往往编程过程中顾此失彼,晕头转向,甚至有的就此放弃。为了理顺思路,就一点亲身体会在此与大家共勉。
关键词:ADO.NET,数据访问,数据源,.NET Framework
参考文献
[1]郑千中.C#编程网络大讲堂[M].北京:清华大学出版社,2011:401-435.
[2]陈伟.ASP.NET3.5网站开发实例教程[M].4版.北京:清华大学出版社,2011:165-177.
[3]支和才.ADO.NET技术研究[J].软件导刊,2011(9):121-123.
ADO.NET编程之基础知识 第4篇
一.ADO.NET基础
程序和数据库交互,要通过ADO.NET进行;通过ADO.NET就能在数据库中执行SQL了。ADO.NET中提供了对不同数据库的统一操作接口(ODBC)。另外还有一种操作数据库的接口是JDBC。
ADO.NET中通过SqlConnection类创建到SQL Server的链接,Sqlconnection代表一个数据库的链接,ADO.NET中的链接等资源都实现了IDisposable接口。
实现了IDisposable接口的对象,在使用完了,要进行资源的释放。调用Dispose()方法。
连接方式访问数据库,连接要打开,使用完要关闭。关闭之后,还可以再打开,这就是Close和Dispose的区别。Dispose(),是完全释放资源。
现在来测试一下,连接数据库是否成功了。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;//使用ADO.NET技术,必须要导入这两个命名空间using System.Data;using System.Data.SqlClient;//namespace ADO.NET1{ class Program { static void Main(string[] args) {//创建数据库连接(连接字符串)string sqlCon = “server=.;database=DB_MyStudentLife;uid=sa;pwd=Password_1”;SqlConnection scon = new SqlConnection(sqlCon);//打开数据库连接 scon.Open();//测试,判断数据库的连接状态if (scon.State == ConnectionState.Closed){ Console.WriteLine(“连接数据库失败”);}if (scon.State == ConnectionState.Open){ Console.WriteLine(“成功打开连接数据库,连接成功”);}Console.ReadKey(); } }}
测试效果图:
最后我们来看看SqlConnection对象的内部原理吧:使用反编译工具reflector就可以;
1.从图中,我们看出来,SqlConnection继承了DbConnection类,实现了ICloneable接口
2.ICloneable接口里面是啥样子呢,我们来看一下,反编译:
3.接下来,我们看下Dbconnection类:
从图中可以看出,Dbconnection类是一个抽象类,继承了Component类,实现了IDbConnection接口,和IDisposable接口,下面我们分别来看看这几个
4.Component类:
看得出来这个类,也实现了IDisposable接口哦,
好了,其他还是来看看IDisposable接口内部的神秘面纱吧:
看得出来,IDisosable定义了一个Dispose(),抽象无返回值的方法,
ADO.net数据库 第5篇
当今世界对数据的需求越来越迫切,数据库的发展可谓是一日千里。现代的数据库不仅能存储传统的文字数据,还可以存储图象、视频、声音等数据。无论采用任何软件编写程序访问数据库,都必须事先建立好数据库,用VB.NET访问数据库也是如此,所以,要为以后方便使用VB.NET访问数据库,必须建立结构合理的数据库。
1.1 数据库系统的基本概念
数据库(DB)是按特定方式存储在存储媒体中可共享的相关数据的集合,可以理解为数据的仓库。现在的数据库往往由多个表(table)组成,表是一个由若干行、若干列组成的二维的关系结构。而数据库可以理解为是由多个表和表之间的关联关系组成的数据的集合。其存在形式是一个计算机文件,如:ABC.DBF,客户.MDB,Total.DBC,我们称之为数据库文件或库文件。
数据库管理系统(DBMS)是数据库系统中对数据进行管理的软件系统。如:Visual Fox Pro,SQL SERVER,ACCESS,Oracle,具有数据定义、数据操作、数据控制与管理的功能。它提供一个可以方便地、有效地存取数据库信息的环境,是用户和数据库的接口。
1.2 数据库应用系统的体系结构
数据库应用体系结构中主要有集中式结构、客户/服务器结构(C/S)和浏览器/服务器结构(B/S)三种形式。
1)中央集中式系统是数据库系统早期的产品,以IBM公司的大型主机为代表。在中央集中式机构中,所有的应用程序都放在大型主机上运行,这些程序包括数据库管理系统和访问数据库的应用程序。
2)C/S结构
C/S结构即客户/服务器(Client/Server)结构,此结构的体系组成要素为服务器、客户机和网络。在客户/服务器系统中,用户是请求的发起者,服务器是请求的处理者和响应者,而且一台客户机可以向不同的服务器请求服务。
3)B/S结构
所谓B/S结构,就是只安装一个服务器(Server),而客户机采用浏览器运行软件,即浏览器/服务器结构。
2 VB.NET特点及应用
Visual Basic.NET是基于微软.NET Framework之上的面向对象的中间解释性语言,可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。在VB.NET中提供了可视化操作数据库的集成开发环境(integrated development environment,简称IDE)。在此环境中,用户可以利用这些可视化数据库工具,可以方便地访问和操作数据库。
Visual Basic.NET最初是随vc#和ASP.NET一起在2002年发布的最初始的VB.net版本。Visual Basic.NET 2003是和.NET Framework 1.1一起发布的。其功能包括对.NET Compact Framework的支持和更好的VB升迁向导,并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时Run Time稳定性。Visual Basic 2005是VB.Net的重大转变,微软决意在其软件名称中去掉了.NET部份。在VB2005中,微软增加了许多新功能,以引用VB对于初学者来说的一些优点。到目前为止,VB.NET版本已经更新到了Visual Basic 2008。
在VB.NET中可以同时开发C/S和B/S两种模式下的数据库应用程序。在“模版”中选择“Windows应用程序”,可以开发C/S模式的应用程序;在“模版”中选择“ASP.NET Web应用程序”,可以开发B/S模式下的应用程序。
3 VB.NET中ADO.NET对象模型
3.1 ADO.NET概述
不同的数据库都提供有一组应用程序接口(API),供应用程序访问数据时使用,但是这些API互不相同,如果要访问这些数据库,程序员就要熟悉这些数据库的API,这样,就给程序员访问数据库带来了不便。现在有了.NET,微软提供了一个普及的通用的框架—框架类库,该类库将跨越所有的存在的Windows API函数,特别的,它将包含一些经常使用的库,而且用户会发现XML和ADO对象模型被集成在一个树状的类的集合中,这个集合就叫做ADO.NET。
不像ADO那样,ADN.NET被设计成为遵循一般的更没有面向数据库缺陷的数据库访问准则,ADO.NET搜集了所有的和数据访问有关的类,这些类由一些数据容器对象组成,这项对象具有一般的数据处理能力—索引、排序和浏览。ADO.NET是为.NET数据库应用程序定义的开发办法,ADO.NET是一个对数据库的整套设计环境,而不是象ADO那样只是围绕着数据访问和数据处理的。
3.2 ADO.NET的优点
Visual Basic 6.0中访问数据库,一般采用ADO(ActiveX Data Object)。ADO作为微软访问数据库的一种模型,已经存在多年。在VB.NET中,微软推出了新的数据访问模型ADO.NET,它将成为构建数据感知.NET应用程序的基础。与ADO的早期版本和其它数据访问组件相比,ADO.NET有以下优点:1)互操作性;2)可维护性;3)可编程性;4)性能优越;5)可伸缩性。
3.3 ADO.NET的结构和数据提供程序
以前数据处理主要以来于双层模型,现在数据处理越来越多使用多层结构向断开方式转变,ADO.NET借用XML提供对数据的断开式访问,而在VB.NET中完成此任务的是ADO.NET的两个核心组件:Data Set和.NET数据提供程序,另外一组是包括Connection,Command,Data Reader和Data Adapter对象在内的组件.
ADO.NET配套的四种数据提供程序,分别是用于SQL Server7.0及更高版本的SqlClient数据提供程序,对应的名字空间是System.Data.SqlClient;用于OLE DB数据源的OleDb数据提供程序,对应的名字空间是System.Data.OleDb;用于ODBC数据源的Odbc数据提供程序,对应的名字空间是System.Data.Odbc;用于Oracle数据源的Oracle Client数据提供程序,对应的名字空间是System.Data.OracleClient。(注意:.NET Framework1.0版本不包括Odbc和OracleClient数据提供程序,需要从微软官方站点下载安装)。以下主要以SqlServer为例介绍一下数据源提供程序的使用方法。
4 ADO.NET对象与数据库的交互
ADO.NET的数据提供程序(Data Provider)提供四大组件(对象):Connection,Command,Data Reader,Data Adapter下面就以SQL Server数据源为例分别介绍一下这对象的使用方法。
4.1 Connection对象
Connection对象表示与数据源之间的连接。可通过Connection对象的各种不同属性指定数据源的类型、位置以及其他属性,可用它来与数据库建立连接或断开连接。Connection对象起到渠道的作用,其他对象如Data Adapter和Command对象通过它与数据库通信。连接到数据源可以在设计时创建连接,也可以通过程序代码建立连接。
1)设计时连接
在窗体的“工具”选项卡中的“数据”中选中Sql Connection,将其拖动到窗体上,生成一个连接对象,选中连接对象,设置Connection String属性。
2)通过代码连接
Dim conn As New Sql Connection()
Conn.Connection String=“Server=Computer Name;Database=orders;UID=sa;PWD=sa”
Conn.Open();
或者
Dim conn As New Sql Connection(“Server=Computer Name;Database=chengyuan;UID=sa;PWD=sa”)
Conn.Open();
注:server数据库服务计算机的名称
Database数据库名称
UID登录数据库的帐号
PWD登录数据库帐号的密码
4.2 Command对象
表示对数据库的查询、对存储过程的调用或要返回特定表内容的直接请求。可使用Command对象对数据库执行任何一种查询、更新、添加和删除操作。Command对象分为创建和执行两个过程。
创建Command对象
创建Command对象的语法如下:
Dim cmd as New SqlCommand()
cmd.Connection=conn;//引用上一步(4.1)的连接
cmd.Command Text=“select*from yuangong”//yuangong为chengyuan数据库中的表
或者
Dim cmd As New Sql Command(“select*from yuangong”,conn)
执行Command对象
执行Command对象有以下四种方法:
1)cmd.Execute Reader(创建Data Reader)
2)cmd.Execute Non Query(执行没有返回数据的SQL语句)
3)cmd.Execute Scalar(返回单个值如:Count(*)Sum(*)或者Avg(*)等
4)cmd.Execute Xml Reader(返回XML流的形式)
4.3 Data Reader对象
Data Reder用于以最快的数据检索并检查查询所返回的行。可使用Data Reader对象来检查查询结果,一次查询一行,当移到下一行时,前一行的内容就会被放弃。Data Reader不支持更新操作,由Data Reader返回的数据是只读的。由于Data Reader对象支持最小特性集,所以它的速度非常快,而且是轻量的。Data Reader对象分为创建Data Reader对象和读取Data Reader中的记录。
创建Data Reader对象
Dim reader As New Sql Data Reader()
读取Data Reader中的记录
当Data Reader对象创建成功后,我们可以用reader.Read()命令来读取记录,如果要读取全部返回行,我们必须采用循环结构才可以实现。
4.4 Data Adapter对象
ADO.NET中提供两个对象用于检索关系型数据并把它存储在内存中,分别是DataReade和DataSet,DataAdapter对象充当数据库和ADO.NET对象模型中断开连接的对象之间的桥梁。DataAdapter对象会填充DataSet对象中的表,而且能读取缓存的更改并将其提交给数据库。具体四个对象结合实现数据操作代码如下:
Dim conn As New Sql Connection()
Conn.Connection String=“Server=Computer Name;Database=orders;UID=sa;PWD=sa”
Conn.Open();//连接数据库
Dim adapter As New Sql Data Adapter=New Sql Data Adapter(“select*from yuangong”,conn)//创建Data Adapter(数据库适配器)对象
Dim data As New Data Set()
adapter.Fill(data,"yuangong")//利用创建的Data Adapter对象向Data Set对象中添加要操作的数据库表
Conn.Close()//关闭数据库
摘要:当今世界对数据的需求越来越迫切,无论采用任何软件编写程序访问数据库,都必须事先建立好数据库,用VB.NET访问数据库也是如此。在VB.NET中,微软推出了新的数据访问模型ADO.NET,它将成为构建数据感知.NET应用程序的基础。
关键词:VB.NET,ADO.NET对象,数据库,交互
参考文献
[1]刘保顺.Visual Basic.NET数据库开发专业教程[M].北京:清华大学出版社,2004.
ADO.Net数据访问技术分析 第6篇
1. ODBC。
最初, 各个数据库软件开发商为自己的数据库设计不同的数据库管理系统 (DBMS) , 不同类型数据库之间的数据交换是一件非常麻烦的事情。为了解决这一问题, 微软提出了ODBC, 即开放式数据库连接技术 (Open Data Base Connectivity) , 它试图建立一种统一的应用程序数据库访问接口, 通过它开发人员无需了解数据库内部的结构就可以实现对数据库的访问。ODBC开创了数据访问技术的一个里程碑, 各数据库厂商纷纷推出为自己数据库系统设计的ODBC驱动程序。
2. OLE DB。
随着计算机技术的迅猛发展, ODBC在面对新的数据驱动程序的设计和构造方法时遇到了不少困难, OLE DB (Object Linkingand Embedding Data Base, 对象连接和嵌入数据库) 技术便应运而生了。从某种程度上来说, OLE DB是ODBC发展的一个产物。OLE DB在设计上采用了多层模型, 对数据的物理结构依赖更少, 理论上说, 任何一种能为OLE DB提供者所识别的语言都可以使用且不必严格基于SQL (Structured Query Language, 结构化查询语言) 的标准。
3. ADO。
ADO对OLE DB做了进一步的封装。从整体上来看, ADO模型以数据库为中心, 具有更多的层次模型和更丰富的编程接口, 它大致相当于OLE DB的自动化版本, 虽然在效率上稍有逊色, 但其追求的是简单、友好的应用。通过ADO, 不仅可以直接访问基于SQL Server的数据库, 还可以访问所有支持ODBC的数据库。
二、基于ADO.NET的数据访问技术
ADO.NET是ADO最新发展的产物, 具有更广泛的通用性。ADO.NET技术的出现, 开辟了数据访问技术的新纪元。ADO.NET是VS.NET的重要组成部分, 是新一代的数据存取技术。在ADO.NET中, 通过Managed Provider所提供的应用程序编程接口 (API) , 便可轻松地访问各种数据源的数据, 包括OLE DB和ODBC所支持的数据库。图1描述了有关数据访问与链接标准的各种数据模型的逻辑关系。
1. 关于Managed Provider和Data Set。
(1) Managed Provider。Managed Provider是ADO.NET中的一个核心内容, 它描述链接的类型并协调应用程序和Data Set对象与数据库之间的通信。正是因为Managed Provider提供了Data Set和数据中心 (就是数据库) 之间的联系, 包含了对数据中心存取的一系列应用程序编程接口 (API) , 才使得编写应用程序的程序员在实现访问各种数据源的数据时, 只需通过Managed Provider所提供的应用程序编程接口 (API) , 而无需了解其内部的实现细节。
(2) Data Set。Data Set是ADO.NET的中心概念, 所有ADO.NET对象的基本原理和根源都是Data Set对象模型。在Data Set的内部是用XML来描述的, 借助XML可以描述具有复杂关系的数据, 比如最常见的父子关系等。Data Set具有的一个明显的技术优势, 就是能够容纳复杂关系的数据。Data Set不依赖于数据源 (如数据库) 而独立存在于内存中, 是一个离散的数据对象, 可以把Data Set想象成内存中的数据库, 也就是把它理解为一个简单、独立和存在于内存中的数据库视图。一个Data Set可以包含任意数目的表, 每个表一般对应于一个数据库表或视图。
2. 通过ADO.NET访问数据库。
(1) 导入名称空间。ADO.NET提供2种托管提供程序用于访问不同的数据源, 它们分别拥有不同的名称空间定义。如果想要访问数据库, 就需要将这些名称空间导入到相应的应用程序中。
(2) 连接数据库。无论使用何种方式对数据库进行数据操作, 很重要的一步就是要建立与数据库的链接。建立一个链接, 则需要创建一个SQLConnection类对象。SQLConnection类对象包含在名称空间System.Data.Sql Client中。
(3) 执行有关SQL查询语句操作。创建好链接后, 需要一种机制实现对数据库进行操作, 实际上就是对数据库执行相关的SQL语句。为完成这一任务, 需要创建一个SQLCommand类对象。SQLCommand类对象包含在名称空间System.Data.Sql Client中。
ADO.net数据库 第7篇
关键词:ADO.NET,C#,数据库,SQL Server,方法
对数据库的访问是各种数据库应用程序开发的核心技术, .NET框架中提出的ADO.NET技术屏蔽了各种数据库的差异性, 为应用程序的开发提供了一致的接口, 增强了程序的可移植性和可扩展性。本文给出以ADO.NET访问SQL Server数据库为例, 基于C#语言描述的ADO.NET访问数据库技术的方法、步骤及核心代码, 以期为.NET从业人员提供帮助。
1、使用连接对象Connection连接数据源
连接对象的作用是在应用程序与指定的数据库之间建立连接, 这是访问数据库的第一步。核心代码如下:
using System.Data;//引入包含基本数据访问类的ADO.NET基本命名空间
using System.Data.SqlClient;//引入包含SQLServer数据提供程序的命名空间
S q l C o n n e c t i o n m y c o n n=n e w S q l C o n n e c t i o n () ;//定义并实例化一个Connection对象
myconn.ConnectionString="Server=数据库服务器名;Data Base=数据名;Uid=用户名;Pwd=密码";//使用SQL Server用户登录验证方式连接数据库
myconn.Open () ;//根据连接字符串, 打开指定的数据库
注意:
(1) 若使用windows验证方式连接数据库, 连接的字符串如下:
mycon n.Con nection Strin g="Data Source=数据库服务器名;initial catalog=数据库名;persist security info=false;Integrated Security=SSPI";
(2) 当数据库使用完毕后要及时关闭数据库的连接, 即myconn.Close () ;
2、使用命令对象Command执行SQL语句或存储过程操纵数据库
数据库连接打开后, 接下来的工作就是操纵数据库, 操纵数据库需要使用SQL语句或存储过程, 而ADO.NET数据提供程序中的Command对象就可以用来实现对数据库的操纵了。核心代码如下:
string sqlstr="";//引号内为SQL语句或存储过程 (也即是要如何操纵数据库)
S q l C o m m a n d m y c m d=n e w SqlCommand (sqlstr, myconn) ;//定义并实例化一个Command对象
m y c m d.E x e c u t e R e a d e r () ;//调用Command对象的方法操纵数据库
说明:
(1) 上面“定义并实例化一个Command对象”相当于下面几条语句
S q l C o m m a n d m y c m d=n e w S q l C o m m a n d () ;//定义并实例化Command对象
mycmd.Connection=myconn;//将先前打开数据库的m y c o n n对象赋给mycmd对象的Connection
mycmd.CommandText=strsql;//将要执行的S Q L语句或存储过程赋给mycmd对象的CommandText属性
(2) Command的主要方法
E x e c u t e N o n Q u e r y () :用于执行Insert、Delete、Update等无需返回记录的SQL语句, 但它会返回执行操作后数据库受影响的行数。
ExecuteScalar () :用于执行SQL语句, 它会返回结果中首行首列的值, 比较适合执行诸如有聚合函数Count () 、Max () 等的查询操作。
Ex ecu teReader () :比较适合返回多条记录的Select语句的执行工作, 它执行之后将会产生一个Data Reader对象, 可以利用此对象完成对执行结果的读取操作。
3、使用数据读取器对象Data Reader读取数据
Command对象在执行ExecuteReader () 方法后, 在返回记录的同时, 将产生一个数据读取器对象Data Reader来指向所返回的记录集, 利用Data Reader就可以读取返回的记录。
DataReader对象的一个重要方法是Read () , 该方法使得指针向前移动一行, 并读取该行记录, 比如在第一次执行Read时, 指针就会从初始位置指向第一行记录, 就可以读取该行记录中的字段值了。需要注意的是利用Data Reader只能依次向前读取而不能修改数据库。Read () 会返回一个布尔型值表明它是否读取到记录, 当读取到记录时, 它返回True, 否则返回F a l s e。核心代码:
SqlDataReader dr;//定义一个数据读取器对象dr
dr=mycmd.ExecuteReader () ;//调用Command的方法执行SQL语句, 并返回数据读取器对象dr
说明:上述的if语句块的位置经常使用While循序来遍历数据读取器中的记录。
4、使用数据集对象DataSet和数据适配器对象DataAdapter访问数据库
DataSet并不像DataReader那样直接和Command及Connection打交道, 而是通过数据适配器的对象DataAdapter来实现和这两个对象的联系。
其实DataSet也是一个数据库, 只不过是它所访问的数据库在内存中的一个副本, 是由程序根据需要临时产生并放在内存中的, 因此也可以形象地说它是真实数据库在内存中一个影像, 它可以包含真实数据库的全部表及表间关系, 也可以根据需要只包含其中的一部分。此时程序就可以只针对这个临时的数据库进行各种操作, 就像面对一个真实的数据库, 并且操作的同时, 到真实数据库的连接是可以断开的, 这就大大提高了性能。其核心代码如下:
DataSet ds=new DataSet () ;//定义并实例化一个数据集DataSet对象
S q l D a t a A d a p t e r a d a p t=n e w SqlDataAdapter (sqlStr, myconn) ;//定义并实例化一个数据适配器DataAdapter对象adapt
adapt.Fill (ds, TableName) ;//调用数据适配器Data Adapter的Fill方法把数据加载到ds的TableName表中
说明:上述步骤完成后, 如果要对数据库进行操作, 只需对内存数据库Dataset对象ds进行访问即可。
结论
ADO.NET是.NET框架中提出的全新的数据访问技术, 该技术访问数据库的基本流程是:首先, 使用相应数据提供程序中的Connection连接数据源, 打开数据库;其次, 使用相应数据库提供程序中的Command或DataAdapter对打开的数据库执行SQL命令;最后, 利用相应的数据提供程序中的DataReader或数据集对象DataSet读取和处理数据。
参考文献
[1]李宪龙.浅析ADO.NET数据库访问技术[J].科技资讯.2007 (12) :103-103
ADO.net数据库 第8篇
ADO.net连接数据库的方法包括连接模式与断开模式两种, 以满足不同数据源的访问需求。
1.1 连接模式
以连接模式访问数据库就是在断开与数据库的连接之前读取及操作数据, 利用Data Reader对象即可实现, 数据库中如果存在只读、只进的数据流, 就可以被Data Reader检索出来, 执行查询时再返回查询结构, 将其存储于客户端缓冲区;用户再利用Data Reader的read方法向其发送请求。利用Data Reader可以立即检索数据, 且每次仅在内存中存储一行, 可以大幅降低系统开销, 提高程序性能。由此可见, 数据库可以直接对Data Reader进行高性能访问, 其仅提供对数据只读与只向前的访问, 且内存中不会驻留其返回结果, 一次应用程序只能访问一条记录, 不会对服务器的内存有过高要求, 所以利用Data Reader就能够将数据显示出来, 故其可以保证程序性能处于最佳状态。
1.2 断开模式
以断开模式访问数据库即是在断开数据库连接后进行数据的读取, 其实现方式是采用Data Adapter对象和Data Set对象配合完成, Data Adapter对象将数据填充至Data Set, 其起到连接数据库与Data Set的作用, 以实现数据的保存与检索, 当其从数据源获取相关数据中后断开连接, 在Data Set中可以进行数据的相关操作, 完成后再将其中的数据返回数据源。
2 ADO.net主要对象
可以说ADO.net是ADO的继承, 其以ADO为基础, 不过ADO.net中对象具有更为强大的功能, 根据上文可知, 这些对象可以根据其不同作用分为数据管理及连接特定数据源两类对象组:
2.1 用于数据管理与存放的对象组
该组对象包括Data Set、Data Table、Data Column、Data Row以及Data Relatior等。其中Data Set是ADO.net的核心, 从某种程度上讲, 该对象中包含了许多Data Table对象, 这些信息以XML形式存在, 比如数据表、数据列、数据行、各表之间的关系等等, 可以对数据进行处理、遍历及搜索等。Data Set通过不同的方法对不同数据源获得的数据进行操作, 无论底层数据是SQL Server、My SQL或其它各类数据库, 其均表现出一致的行为。Data Set对象中所存储的数据与数据库未进行连接, 其对数据的更改会缓存于每个Data Row中, 且Data Set中信息改动后, 要通过Dataadapte在数据库中插入Data Set, 再向数据源传递更新信息。
2.2 用于连接特定数据源的对象组
该组对象包括Connections、Commands以及Data Reader等。查询所返回的行会被Data Reader在最短时间内检索并检查, 其主要作用就是就是提供由数据库服务器向应用程序的快速只向前的数据流。Data Reader仅返回只读数据, 由于该对象支持最小特性集, 因此可以获得轻量级的、非常快的速度, 因此可以认为Data Reader是流水游标, 它不会提供更改数据库记录的方法, 也不会在内存中缓存数据, 该对象依赖于连接。使用Data Reader检索数据库时首先要创建Connection对象, 再对需执行的select命令及当前连接进行设置, 创新Data Reader对象时需调用Command对象的Execute Reader方法来完成, 打开连接时用Connection对象的Open方法来进行, 完成操作, 再用其Close方法将读取器对象关闭即可。
3 AOO.net数据访问性能优化技术
3.1 数据库连接池技术优化
所谓连接池即为各种连接对象的集合体, 其可对自身内部连接对象的个数、使用次数、时间等进行控制, 并为对应程序提供接口的获取及释放。要访问数据库中各个程序, 必须与数据库建立连接, 再进行数据存取, 传统方法与数据库建立连接需花费较长的协商时间与存取时间, 因此连接池技术可大大提高数据库的连接效率、减少资源的浪费。ADO.net中, net数据提供的所有程序均可实现连接池, 大大提高了连接过程的简便性。
3.2 数据库提供者性能优化
ADO.net数据库访问是以.net数据供应器为基础, 不同的数据提供者其对应用程序的影响也会产生不同影响, 因此web开发者要充分考虑数据提供者选择的适用性。通过实验测试可知, SQLClient.net的效率显著高于OLEDB.net, 因此前者在连接、提取及更新数据库方面要优于后者, 因此采用SQL Server数据库可以采用SQL Client.net数据提供程序进行访问。
3.3 优化存储过程
存储过程是一种让服务器处理数据的好方法, 其可大幅降低客户机的工作负担, 且存储过程可以带来临时表、函数、游标等特性, 且调试、升级、维护等均有较大的便利性, 因此访问数据库时可采用存储过程进行操作, 有规律的多次执行一条或多条相关的SQL语句;执行存储过程中, 可通过Data Adapter对象执行存储过程将数据送至数据库。
参考文献
[1]粱超, 张莉, 贺垄.ADO.NET技术内幕[M].北京:清华大学出版社, 2003:301-302.
[2] (美) Karli Watson, Christian Nage1.C#入门经典[M].北京:清华大学出版社, 2006:229.
[3]张牧笛, 罗驱波, 白静宜.ADO.NET数据访问模型研究[J].微计算机信息, 2008, 2 (3) :202-204.
ADO.net数据库 第9篇
ADO.NET是Microsoft为解决Web和分布式应用程序而设计的,使采用不同程序语言创建的应用程序能互相通信,并考虑了伸缩性、无状态性和XML的问题。同时在ADO的基础上又引入了一些新的对象,比ADO更适应于分布式及Internet等大型应用程序环境,更具有扩展性,ADO.NET的数据存取采用的是离线存取模式,其中Data Set对象作为一个独立运行的实体,可以将数据集设想为始终断开的记录集,而且A-DO.NET的数据交换格式为XML。ADO.NET的这些特点证明了它是目前最优秀的数据库访问技术。
2 访问机制
ADO.NET提供了两种数据访问模式:连接模式和断开连接模式。在断开连接模式下,当应用程序从数据源获得所需数据,就断开与数据源的连接,并将获得的数据以XML的形式存放在主存中。在处理完数据之后,再取得连接并完成更新工作,这样服务器的资源消耗较少,可以同时支持更多并发的客户机。连接模式下客户机一直保持和数据库服务器的连接,这和ADO技术是一致的。这种模式适合数据传输量少、系统规模不大、客户机和服务器在同一网络内的环境。
ADO.NET有两个核心组件:数据集Data Set和.NET数据提供程序。其中Data Set类是断开连接模式的核心,Data Set在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,可以描述复杂关系的数据,所以Data Set实际上可以容纳具有复杂关系的数据,不再依赖于数据链路。Data Set由一个或多个Data Table对象的集合和有关Data Table对象中数据的关系信息组成。Data Table对象由数据行(记录)、数据列(字段)以及主键、外键、约束组成。
ADO.NET体系结构中另外一个非常重要的部分是数据提供者对象(Data Provider),它是访问数据库的必备条件。主要实现对数据的快速、只读访问。包括Connection,Command,Data Adapter,Data Reader对象在内的组件,其中,Connection对象提供对数据源的连接;Command对象执行数据库命令,获得返回数据、修改数据、运行存储过程、以及发送或检索参数信息等;Data Adapter使用Command对象在数据源中执行SQL命令,用FILL方法将数据加载到Data Set中,使对Data Set中数据的更改与数据源保持一致;Data Reader对象从数据库中按顺序读出各项记录,而且在内存中只保留一项记录。
3 ADO.NET主要对象
ADO.NET是在ADO的基础上发展起来的,是对ADO的继承,但ADO.NET中对象的功能更为强大。这些对象可以分为两个组,一组对象用来存放和管理数据(例如:Data Set,Data Table,Data Column,Data Row和Data Relation);另一组对象用来连接到某个特定的数据源(例如:Connections,Commands和Data Reader)。
3.1 Data Set
Data Set是ADO.NET的核心,可以将Data Set对象视为许多Data Table对象的容器。通常包含数据表、数据列、数据行以及各种表之间的关系等。所有这些信息都以XML的形式存在,可以处理、遍历、搜索任意或者全部的数据。Data Set使用相同的方式来操作从不同数据来源取得的数据,不管底层的数据库是SQL Server还是My SQL或是其他数据库,Data Set的行为都是一致的。存储在Data Set对象中的数据未与数据库连接。对数据所做的任何更改都将只是缓存在每个Data Row之中。Data Set中的信息改动之后,必须求助于Dataadapter把Data Set“插入”到数据库中,并把更新传递到数据源上。
3.2 Data View
Data View主要功能是返回数据表的默认视图表,此默认视图就是一个Data View对象,可用来设置Data Table对象中的数据显示方式,可以将数据做排序与筛选。所以Data View对象与Data Table对象是相关联的。可以使用多个Data View对象同时查看同一Data TAble,优点就是不必以不同结构方式保留数据的两份副本。
3.3 Data Reader
Data Reader用于以最快的速度检索并检查查询所返回的行。主要提供从数据库服务器向应用程序的快速只向前的数据流。由Data Reader返回的数据是只读的。由于Data Reader对象支持最小特性集,所以它的速度非常快,而且是轻量级的。正是由于这些特性,它也被认为是流水游标(fire hose cursor)。Data Reader并不在内存中缓存数据,也不提供更改数据库中记录的方法。Data Reader是一个依赖于连接的对象。
3.4 Data Adapter
Data Adapter用于从数据源检索数据并填充到Data Set中的表,它还将对Data Set的更改解析回数据源。两种情况下使用的数据源可能相同,也可能不相同。这两种操作分别称作填充(fill)和更新(update)。Data Adapter充当数据库和ADO.NET对象模型中非连接对象之间的桥梁的同时,还能隐藏和Connection、Command对象沟通的细节。Data Adapter对象包含4个不同类型的Command,Select Command用来取得数据来源中的记录;Insert Command用来添加记录到数据来源;UpdateCommand用于更新数据来源中的记录;Delete Command用于删除数据来源中的记录。
其他重要的对象还有Connection,Command,Data Table,Data Relation等。
4 应用实例
支持离线访问是ADO.NET的最大优势,这在访问Web数据库时得到明显体现,而且ADO.NET使得页面的执行效率和安全性能都有较大提高,下面以开发的某学院校务公开网站管理系统的添加新闻模块为例来说明利用ADO.NET对数据库的访问过程。功能为在后台单击添加按钮,则在数据库中添加一条记录。程序使用C#.NET编写代码,数据库服务器为SQL Server 2005,数据库名称为“sweb”,news为sweb数据库存储记录的表,包括字段ID(为标志列),Title,Leibie,Laiyuan,Cont。
在web.config文件中定义数据库连接字符串:
添加数据库连接类:
5 结语
数据库访问是一项频繁且重复性较高的操作,在Web应用系统中有着举足轻重的作用。ADO.NET成功实现了在“断开的”概念下实现客户端对服务器数据库的访问,能够帮助程序员以更加有效的方式构建高效数据库应用程序。针对前面介绍的具体实现,还可以使用存储过程来完成,从而提高网站的性能和安全性。
摘要:ADO.NET是基于.NET框架的应用程序访问数据库的方式。通过ADO.NET的体系结构,论述了ADO.NET的结构及其主要对象,并结合某学院校务公开网站管理系统,重点讨论了ADO.NET技术及其数据访问模型。
关键词:数据库访问,ADO.NET,Web,浏览器/服务器
参考文献
[1](意)Dino Esposito.ADO.NET2.0技术内幕[M].北京:清华大学出版社,2006.
[2]王宝祥.基于ADO.NET的数据库访问技术研究[J].计算机应用与软件,2004.
[3]希凡.基于.NET框架的WEB数据库访问技术的研究与实现[D].武汉:武汉理工大学,2006.
ADO.net数据库
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。