1、8.7 连接数据库技术,8.7.1ODBC技术 8.7.2 OLEDB技术8.7.3 ADO技术 8.7.4 ADO.NET技术8.7.5 连接SQL Server实例,8.7.1 ODBC技术,ODBC(Open Database Connectivity,开放数据库连接)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它提供了一组规范和一组对不同类型的数据库进行访问的标准API(应用程序编程接口)函数。这些API利用SQL语言来完成其大部分任务。 一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,
2、 所有对数据库的操作由对应的DBMS的ODBC驱动程序完成。即不论是SQL Sever、Access还是Oracle数据库,均可用ODBCAPI进行访问。ODBC的最大优点:以统一的方式处理所有的数据库。,1 ODBC概述,ODBC体系结构,8.7.1 ODBC技术,(1)ODBC数据库应用程序应用程序是使用VB、VC、ASP等语言编写的程序。(2)驱动程序管理器驱动程序管理器是一个Windows下的应用程序,如果系统安装了ODBC驱动程序管理器的话,在Windows操作系统环境下的控制面板上有 “数据源ODBC”图标。驱动程序管理器用于在应用程序和各类数据库系统的驱动程序之间传递数据。应用程
3、序不能直接调用各类数据库的驱动程序。驱动管理程序在应用系统运行时,负责加载相应的各类数据库的驱动程序,如SQL Server、Oracle、Foxpro等数据库的驱动程序,并把结果返回给应用程序。(3)DBMS驱动程序各种数据库有各自的驱动程序。某种数据库的驱动程序与对应的数据源连接。驱动程序应用于实现SQL请求,并把操作结果返回给ODBC驱动管理程序。驱动程序还负责访问数据源时,进行数据格式和类型的转换。(4)数据源数据源(Data Source Name,简称DSN)是一组数据的位置。是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库的运行平台。用于表示驱动程序与
4、某个目标数据集连接的命名表达式,被称为数据源名。可以将数据源名看成是与一个具体数据库建立的连接。,8.7.1 ODBC技术,DSN有三种类型:(1)系统DSN即是面向系统全部用户的数据源, 系统中的所有用户都可以使用。(2)用户DSN即是仅面向某些特定用户的数据源, 只有通过身份验证才能连接。(3)文件DSN即是用于从文本文件中获取数据,提供多用户访问。,8.7.1 ODBC技术,2.ODBC体系的工作流程,应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源。ODBC管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。应用程序将
5、已创建好的数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接,为访问数据库做好准备。 在ODBC中,ODBC API函数不能直接访问数据库,必须通过ODBC驱动程序管理器与数据库交换信息。ODBC驱动程序管理器在应用程序和数据源之间起着转换与管理的作用。,8.7.1 ODBC技术,3创建 SQL Sever DSN,(1)在“控制面板”中的“管理工具”下双击“数据库(ODBC)”图标,打开“ODBC数据源管理器”,在“ODBC数据库管理器”中可以选择“用户DSN” 、“系统DSN”、“文件DSN”。,8.7.1 ODBC技术,(2)如果要添加一个新的数据源可以单击“添加”按钮,弹出“
6、创建新数据源”对话框,,8.7.1 ODBC技术,(3)在上图中选择驱动程序SQL Server,单击“完成”按钮。弹出“创建到SQL Server的新数据源”,如图所示。,本主机名称,8.7.1 ODBC技术,(4)单击“下一步”,出现选择SQL Server数据库服务器对登录帐户的身份验证方式的对话框,可以选择Window身份验证或SQL Server身份验证。,8.7.1 ODBC技术,(5)单击“下一步”,在“更改默认的数据库为”下拉列表框中选择所创建的数据库名称,8.7.1 ODBC技术,8.7.1 ODBC技术,ODBC缺点:只能用于关系型数据库,使得利用ODBC很难访问对象数据库
7、及其他非关系数据库。OLE 全称 Object Link and embedding,即对象连接与嵌入 。扩展了由ODBC提供的功能,是访问数据库的另一个统一的接口标准,它建立在ODBC基础之上,不仅能够提供传统的数据库访问,并且能够访问关系型数据库和非关系型数据库。OLEDB是系统级的编程接口,它定义了一组COM接口,OLEDB其本质就是一个封装数据库访问的一系列COM接口,使用COM接口不仅能够减少应用程序和数据库之间的通信和交互,也能够极大的提升数据库的性能,让数据库的访问和操作更加便捷。,8.7.2OLEDB技术,用odbc连接数据库sql server:(1)系统dsn: conns
8、tr=“DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname” (2)文件dsn: connstr=“FILEDSN=xx; UID=xx; PWD=xxx;DATABASE=dbname” (3)还可以用连接字符串(从而不用再建立dsn):connstr=DRIVER=SQL SERVER; SERVER=servername;UID=xx;PWD=xxx,用odbc连接数据库access:(1)系统dsn: connstr=DSN=dsnname (或者为:connstr=“DSN=dsnname;UID=xx;PWD=xxx”)(2)文件dsn: co
9、nnstr=“FILEDSN=xx” (3)还可以用连接字符串(从而不用再建立dsn):connstr=“DRIVER=MicrosoftAccess Driver;DBQ=d:abcabc.mdb ,用oledb连接数据库:(1)连接sql server:connstr=PROVIDER=SQLOLEDB;DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname (2)连接access:connstr=PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=cabcabc.mdb,8.7.3ADO技术,1 A
10、DO的概述 ActiveX Data Object(ADO)是继ODBC之后功能强大的数据访问技术,是基于OLE DB的访问接口,它是面向对象的OLE DB技术,继承了OLE DB的优点。属于数据库访问的高层接口。ADO是封装OLEDB所提供的功能的高级封装程序,最初是为VB 6.0提供的。将OLEDB封装在一个对象模型中,提供了对OLEDB数据源应用程序级的访问功能。,8.7.3ADO技术,2、 ADO对象模型,在ADO模型中,主体对象只有三个:Connection、Command、Recordset,其他四个集合对象为Errors、Properties、Parameters和Fields,
11、这些对象组成了ADO对象模型。 Recordset对象。Recordset对象代表一个表的记录集或命令执行的结果,就像个虚拟数据表。在记录集中,总有一个当前记录。记录集是ADO管理数据的基本对象,它是一种表状结构,每一行对应一个记录(Record),每一列对应一个域(Field)。Recordset对象也可通过游标对记录进行访问。一般来说,使用ADO访问数据库的大致步骤为:(1) 创建一个到数据库的 ADO 连接;(2) 打开数据库连接;(3) 创建 ADO 记录集 ;(4) 从记录集提取您需要的数据 ;(5) 关闭记录集 ;(6) 关闭连接。,8.7.3ADO技术,1、ADO.NET 是一种
12、高级的数据库访问技术。虽然始于ADO,但是一个改进了的ADO的新版本, ADO.NET 最终演变成了一个和ADO非常不同的技术 。(1)断开连接技术 即用户访问数据库中的数据时,首先要建立与数据库的连接,从数据库中下载需要的数据到本地缓冲区,之后断开与数据库的连接。此时用户对数据的操作(添加、修改、删除等)都是在本地进行的,只有需要更新数据库中的数据时,才再次与数据库连接,发送修改后的数据到数据库后关闭连接。这样大大减少了因连接过多(访问量较大时)对数据库服务器资源的大量占用。(2)数据集缓存技术( DataSet )在ADO中,数据在内存中表现为记录集(Recordset),就像个虚拟数据表
13、。而在ADO.NET中,从数据源检索的数据在内存中缓存为数据集(Dataset)。数据集就像一个虚拟的内存中的数据库,包括一个或多个数据表(DataTable)。这些表之间通常还包含关系和约束信息。由于数据集可以保存多个独立的表并维护表间关系,因此,它可以保存比记录集丰富得多的数据结构。数据集与数据库之间没有任何实际关系,这样,就不必保持与数据库的连接状态,使数据库可以自由执行其他任务。当在数据集上执行完更新操作后,再连接基础数据库写入结果。,8.7.4ADO.NET技术,2、ADO.NET对象模型,8.7.4ADO.NET技术,3、ADO.NET访问数据库方式ADO.NET是由很多类组成的一
14、个类库。这些类提供了很多对象,分别用来完成和数据库的连接,进行查询、插入、更新和删除等操作。它主要包括Connection、Command、DataReader、DataAdapter、DataSet共5个对象。这5个对象提供了两种读取数据库的方式:第一种是利用Connection、Command和DataReader对象,这种方式只能读取数据库,即不能修改记录。如果只是想查询记录的话,这种方式的效率更高些。第二种是利用Connection、Command、DataAdapter和DataSet对象,这种方式更灵活,可以对数据库进行各种操作。,8.7.4ADO.NET技术,4、使用ADO.NE
15、T开发数据库应用程序 使用ADO.NET开发数据库应用程序一般分为以下几个步骤: 根据使用的数据源,确定使用的.NET数据提供程序。 建立与数据源的连接,创建Connection对象来连接数据库。 创建Command对象,执行SQL命令。 创建DataAdapter对象,提供数据源与记录集之间的数据交换,数据库与内存中数据交换。创建DataSet对象,将从数据源中得到的数据保存在内存中,并对数据进行各种操作。 创建Windows窗体,添加必要的控件。设置各控件的属性,编写主要控件的事件代码。 使用ADO.NET开发数据库应用程序,可以使用ADO.NET代码访问数据库,也可以使用ADO.NET控
16、件访问数据库,还可以使用数据窗体向导。,8.7.4ADO.NET技术,8.7.5连接数据库实例,添加两个控件richTextBox1 和 button1,“查询”按钮下的代码:,string ConStr = “ PROVIDER=SQLOLEDB; Data Source=HL; UID=x;PWD=xx;Database=XSCJ”; /连接字符串SqlConnection conn = new SqlConnection(ConStr); /建立一个数据库连接实例conn.Open(); /打开数据库连接SqlCommand cmd = new SqlCommand(); /用于执行SQ
17、L语句cmd.Connection = conn;cmd.CommandText = select * from SC;cmd.CommandType = CommandType.Text;SqlDataReader sdr = cmd.ExecuteReader(); /执行while (sdr.Read() /每次读一条记录 读完停止 richTextBox1.Text += sdr.GetString(0) + + sdr.GetString(1) + + sdr.GetString(2) + + sdr.GetString(3) + n; /读出的的字符串赋值给控件 conn.Dispose(); /释放连接,