数据库访问类

数据库访问类
数据库访问类

数据访问类

https://www.360docs.net/doc/b35201871.html,包含4个是数据访问类:

● DbConnection;

● DbCommand;

● DbDataReader;

● DbDataAdapter。

1.DbConnection

DbConnection类提供与数据库的连接。创建DbConnection对象时,应提供与DBMS通信所需的所有信息,如数据库的位置、用于认证的用户名和密码以及要访问的DBMS中的数据库。

所有其他https://www.360docs.net/doc/b35201871.html,数据访问类都依靠DbConnection与数据库进行通信。DbConnection类的扮演角色如图2.1所示。

图2.1 DbConnection类

在从DbConnection派生而来的类中,到数据库的连接都是由连接字符串定义的,该字符串存储在属性DbConnection.ConnectionString中。

数据库连接应只在传输数据时才打开,因此创建DbConnection实例时并不自动连接到数据库。DbConnection类定义了Open()方法和Close()方法,用于控制连接何时可用。很多其他的https://www.360docs.net/doc/b35201871.html,类也能控制连接状态,例如,有些类在完成操作后关闭它们使用的连接。

DbConnection对象还能参与事务。可用DbConnection.BeginTransaction()方法开始事务,或使用DbConnection.EnlistTransaction()作为已有事务的一部分执行操作。

访问SQL Server或SQL Server速成版中的数据时,使用SqlConnection,该类是DbConnection的子类。一般来说,DbConnection和SqlConnection及其他子类都称为连接类。

第1章介绍了很多关于数据库的知识,但没有介绍如何通过C#使用数据库。毕竟,这是本书的主题,因此现在开始学习使用C#访问数据库。本章包含很多理论,但也有相当多的代码。从本章开始,将学习和使用https://www.360docs.net/doc/b35201871.html,—.NET框架中使用的数据库访问库。从本章中的代码可以了解到后面几章的内容。本章将创建几个相对比较简单的示例应用程序,用于说明在C#中使用https://www.360docs.net/doc/b35201871.html,的关键特性,包括功能强大的数据绑定技术。因此,在本章中将不会有太多细节解释示例代码如何工作,因为具体的细节将在本书后面详细解释。

另外,本章将介绍一些工具,帮助读者使用SQL Server 2005速成版及SQL Server完整版和其他数据库,还将介绍本书将使用的示例数据库。

在本章中,将学习:

●什么是https://www.360docs.net/doc/b35201871.html,以及如何在C#中使用它来访问数据库,包括编程方式和使用

数据绑定;

●有哪些可视化的工具可用于访问和操作数据库;

●如何使用一些简单的示例应用程序来执行一些基本的数据库访问功能;

●如何使用本书的示例数据库。

要执行本章和后面几章中的代码,必须安装几个速成版产品,这些产品是:

● Visual C# 2005速成版;

● Visual Web Developer 2005速成版;

● SQL Server 2005速成版;

● SQL Server Management Studio速成版。

在附录A中可以找到关于如何下载和安装所有这些产品的指南。如果还没有安装这些产品,现在先阅读附录A,然后再继续阅读本章。

2.1 C#中的数据库访问

用.NET框架编写的(当然也包括用C#编写的应用程序)应用程序需要访问数据库时,将使用

https://www.360docs.net/doc/b35201871.html,来实现数据库访问。本节介绍什么是https://www.360docs.net/doc/b35201871.html,、如何在.NET命名空间中找到它及其基本工作原理是什么。

然后,花些时间探讨.NET数据库编程中的一个关键特性:数据绑定。数据绑定是一种非常有用的访问数据库的方法,能够减少需要编写的代码量。很多简单任务可以通过纯粹声明式代码来完成。

2.1.1 https://www.360docs.net/doc/b35201871.html,

https://www.360docs.net/doc/b35201871.html,是微软的数据访问框架的最新产物,它是.NET框架的一部分。在https://www.360docs.net/doc/b35201871.html,之前,程序员在ASP(Active Server Pages)或Visual Basic中使用ADO(AtiveX Data Objects),这是一组COM(Component Object Model,组件对象模型)组件,它通过一个易于使用的封装类提供对底层数据访问代码的访问。虽然ADO大大简化了数据库访问,但更高级的程序员(特别是C++程序员)通常更喜欢使用更直接、更快的代码,如OLE DB(Object Linking and Embedding for Databases)代码库。

https://www.360docs.net/doc/b35201871.html,比ADO的功能更强大。它是在.NET代码中访问数据库的最好工具。

如果现在问微软的人,https://www.360docs.net/doc/b35201871.html,是什么的缩写,将知道它并不是什么的缩写。它不再包含“ActiveX”,ActiveX是旧的微软技术,现在不再是应用程序开发的一部分了。

.NET框架中的https://www.360docs.net/doc/b35201871.html,类型(在System.Data命名空间及其子空间下的所有类型)包括那些为访问SQL Server、OLE DB、ODBC和Oracle数据库而优化的类型。它们都是基于通用类的,因此使用https://www.360docs.net/doc/b35201871.html,访问不同的DBMS是相似的。

https://www.360docs.net/doc/b35201871.html,类型实现两个主要的功能。

●数据访问:用于访问数据库中数据和操作数据库的类型;

●数据表示:用于包含数据库数据(如数据表)的类型。

这两种类型之间联系密切,在数据库开发中两种类型都会用到。严格地说,可以只用一种数据库访问类型。然而,如果使用数据访问类型来填充数据表示类型将节省大量工作。

https://www.360docs.net/doc/b35201871.html,包含7个重要的基类,其中4个是数据访问类:

● DbConnection;

● DbCommand;

● DbDataReader;

● DbDataAdapter。

接下来的几小节将讨论这些类,它们用于在https://www.360docs.net/doc/b35201871.html,的命名空间的各部分派生出更具体的类,如命名空间System.Data.SqlClient中的SQL Server访问类。

其他3个类是数据表示类:

● DataTable;

● DataRelation;

● DataSet。

本节将介绍这些类的方法和属性,为本章后面编写代码做准备。这里不详细介绍它们的所有属性和方法,而只介绍完成本章工作所需的知识。

DataTable类使用了其他一些重要的类:DataColum、Constraint和DataRow,本节也将介绍它们。

1.DbConnection

DbConnection类提供与数据库的连接。创建DbConnection对象时,应提供与DBMS通信所需的所有信息,如数据库的位置、用于认证的用户名和密码以及要访问的DBMS中的数据库。

所有其他https://www.360docs.net/doc/b35201871.html,数据访问类都依靠DbConnection与数据库进行通信。DbConnection类的扮演角色如图2.1所示。

图2.1 DbConnection类

在从DbConnection派生而来的类中,到数据库的连接都是由连接字符串定义的,该字符串存储在属性DbConnection.ConnectionString中。

数据库连接应只在传输数据时才打开,因此创建DbConnection实例时并不自动连接到数据库。DbConnection类定义了Open()方法和Close()方法,用于控制连接何时可用。很多其他的https://www.360docs.net/doc/b35201871.html,类也能控制连接状态,例如,有些类在完成操作后关闭它们使用的连接。

DbConnection对象还能参与事务。可用DbConnection.BeginTransaction()方法开始事务,或使用DbConnection.EnlistTransaction()作为已有事务的一部分执行操作。

访问SQL Server或SQL Server速成版中的数据时,使用SqlConnection,该类是DbConnection的子类。一般来说,DbConnection和SqlConnection及其他子类都称为连接类。

2.DbCommand

DbCommand类提供与数据库交互的主要方法。可以用DbCommand对象来执行SQL语句、运行存储过程等。DbCommand及其派生类称为命令类。

大部分时候并不直接使用DbCommand,而是用封装了DbCommand的其他对象。但有时候需要对数据库通信进行更多的控制,这时就可以使用DbCommand对象。

DbCommand对象的扮演角色如图2.2所示。

图2.2 DbCommand类

DbCommand中最重要的属性是https://www.360docs.net/doc/b35201871.html,mandText。要执行SQL语句,就要将语句文本放在这个属性中。可以用https://www.360docs.net/doc/b35201871.html,mandType来指定要执行的语句类型,使用DbCommand.Connection和DbCommand.Tranction来访问底层的连接或事务。

要注意,DbCommand对象可能有参数化的命令字符串,命令中的参数来自类型为DbCommand. Parameters集合的属性。这与直接在命令字符串中输入参数相比有很多优点,在本书后面部分将会看到。

要使用DbCommand对象执行命令,有三种选择,这取决于要执行的命令是什么。有些命令不返回结果,这种情况下可以用DbCommand.ExecuteNonQuery()方法;有些命令返回一个结果,这时可用DbCommand.ExecuteScalar()方法;最后,有很多命令返回多行数据,这时可用DbCommand. ExecuteReader()方法,它将返回一个DbDataReader对象(下一小节将解释)。

SQL Server的DbCommand版本名为SqlCommand。它有自己的一些特殊方法,如SqlCommand. ExecuteXmlReader()方法,它直接以XML格式返回结果。

3.DbDataReader

使用DbDataReader类可以从结果集中读取数据,如从执行存储在命令对象中的命令生成的结果集中读取数据。该类经过高度优化,可以很快地访问数据库中的数据。然而,这种优化也有些副作用,例如,只能以串行方式一次读取一行数据。不能读完两行后再返回去读取第一行。通常,可以用DbDataReader对象(更确切地说,是数据阅读器的子类对象)来提取要使用的行数据,并将其存储在其他对象中。例如,可以读取一个结果集中的每行,将其存储到在自定义集合或泛型列表对象中的自定义类中。

与命令对象一样,很多时候数据阅读器对象是由https://www.360docs.net/doc/b35201871.html,命名空间下的其他类使用的,用户不必直接使用它们。

图2.3说明了如何在数据库应用程序中使用数据阅读器。

要使用数据阅读器对象,首先必须调用DbDataReader.Read()方法选择结果集中的第一行。可不断调用该方法来移动数据阅读器,使数据阅读器像结果集中的游标一样总是指向一行。获取一行时,Read()方法返回true;否则返回false—如当所有行都已经读完时。也可以用DbDataReader. HasRows属性来判断结果集中是否还有其他行。

图2.3 DbDataReader类

很多属性和方法可用于检查当前选中的行。DbDataReader.FieldCount查看当前行包含多少列,并用DbDataReader的重载索引器访问各列。如果知道要访问的列名,可用基于字符串的索引器来获得列值,也可以使用基于整数的索引器通过位置获得列。在这两种情况下,这种方法都将返回object值,可将其转化为其他类型的数据。

也可以使用DbDataReader提供的多个方法直接获得类型化数据,如GetString()和GetInt32()分别将指定列以string和int值返回,列通过其索引选择。要使用这些方法获得值类型,必须首先使用DbDataReader.IsDBNull

检查空值;否则,空值将引发异常。检查空值是必须的,因为不管什么数据库类型都可以为空。这与.NET中的值类型不同,可为空的值类型(如int)在这种上下文环境中是不受支持的。

DbDataReader也能够获得关于它包含的数据的元信息—使用DbDataReader.GetSchema Table()方法,这样就可以知道列的名称、数据类型和其他信息,如列是否包含空值。

与前面的其他类一样,也有专门用于SQL Server的数据阅读器类,这就是SqlDataReader,本书将使用该类。该类继承DbDataReader,提供将数据读取为本地SQL类型的方法,这样就能够避免空类型的问题。这些类型包含在System.Data.Sqltypes命名空间中,是可为空的;如SqlDouble和SqlInt32。虽然这些类型也可以像标准的值类型那样进行操作,但它们实际上是引用类型。

4.DbDataAdapter

在https://www.360docs.net/doc/b35201871.html,的核心数据访问类中,最后一个是DbDataAdapter类。它比前面介绍过的类型要复杂得多,设计该类的目的只有一个:减少存储在数据集对象中的数据与数据库进行数据交换时的干扰。与前面的类一样,DbDataAdapter类也有很多派生类,它们统称为数据适配器类。

稍后将详细解释什么是数据集对象,简单地说,它们是能够以.NET对象的形来表示数据库中数据的对象。数据集对象可以包含整个表或多个表的数据。数据适配器既可以将数据库中的数据传输给包含在数据集中的表,也可以将数据集中的数据传输到数据库中。

这个功能由命令对象和数据阅读器对象执行,因此大部分时候用户不必考虑它。然而,DbDataAdapter最重要的(也是最有用的)特性之一是,它用于传输数据的命令对象被暴露出来,因此可以根据需要对它们进行定制。

图2.4说明了DbDataAdapter类的工作原理,包括它包含的命令对象。

图2.4 DbDataAdapter类

数据适配器使用的4个命令对象存储在4个属性中:SelectCommand(用于查询数据)、InsertCommand(用于添加数据)、UpdateCommand(用于编辑数据)和DeleteCommand(用于删除数据)。要使用适配器,并不一定全部用到这4个属性,例如,可以只用适配器来查询数据。另外,.NET框架可以根据其他命令的值推断出命令的值,例如,可以根据查询命令来生成更新、插入和删除命令。然而,这种自动生成的命令的效率可能不如手工提供的高。本书稍后还会讨论这个问题。

数据适配器中最常用的两个方法是DbDataAdapter.Fill()和DbDataAdapter.Update()。Fill()方法从数据库中获取数据;Update()方法更新

数据库中的数据。这两个方法都可以用于数据集或单个数据表。另外,可以使用DbDataAdapter.FillSchema()获取架构数据。

SQL Server中的DbDataAdapter版本是Sql DbDataAdapter。

数据库实时同步技术解决方案

数据库实时同步技术解决方案 一、前言 随着企业的不断发展,企业信息化的不断深入,企业内部存在着各种各样的异构软、硬件平台,形成了分布式异构数据源。当企业各应用系统间需要进行数据交流时,其效率及准确性、及时性必然受到影响。为了便于信息资源的统一管理及综合利用,保障各业务部门的业务需求及协调工作,常常涉及到相关数据库数据实时同步处理。基于数据库的各类应用系统层出不穷,可能涉及到包括ACCESS、SQLSERVER、ORACLE、DB2、MYSQL等数据库。目前国内外几家大型的数据库厂商提出的异构数据库复制方案主要有:Oracle的透明网关技术,IBM的CCD表(一致变化数据表)方案,微软公司的出版者/订阅等方案。但由于上述系统致力于解决异构数据库间复杂的交互操作,过于大而全而且费用较高,并不符合一些中小企业的实际需求。 本文结合企业的实际应用实践经验,根据不同的应用类型,给出了相应的数据库实时同步应用的具体解决方案,主要包括: (1) SQLSERVER 到SQLSERVER 同步方案 (2) ORACLE 到SQLSERVER 同步方案 (3) ACCESS 到SQLSERVER/ORACLE 同步方案

二、异构数据库 异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。异构数据库的异构性主要体现在以下几个方面: 1、计算机体系结构的异构 各数据库可以分别运行在大型机、小型机、工作站、PC嵌入式系统中。 2、基础操作系统的异构 各个数据库系统的基础操作系统可以是Unix、Windows NT、Linux等。 3、DMBS本身的异构 可以是同为关系型数据库系统的Oracle、SQL Server等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面向对象,函数型数据库共同组成一个异构数据库系统。 三、数据库同步技术

实验十二 数据库的连接与访问 实验指导

实验十二数据库的连接与访问实验指导 https://www.360docs.net/doc/b35201871.html,是.NET Framework中的一系列类库,提供了在.NET开发中数据库所需的操作的类。在.NET应用程序开发中,C#可以使用https://www.360docs.net/doc/b35201871.html,。 可以将https://www.360docs.net/doc/b35201871.html,看做是一个介于数据源和数据使用者之间的转换器,如图1所示。https://www.360docs.net/doc/b35201871.html,接收使用者语言中的命令,如连接数据库、返回数据集等,然后将这些命令转换成可以在数据源中正确执行的语句。 图1 https://www.360docs.net/doc/b35201871.html,的功能示意图 一、https://www.360docs.net/doc/b35201871.html, 命名空间及其常用类 https://www.360docs.net/doc/b35201871.html,体系结构的类包含在System.Data命名空间中(命名空间相当于一个容器,它包含一组定义的类或结构,命名空间也可以嵌套在另一个命名空间中。.NET类库提供了很多类,根据类的功能不同,又划分了很多命名空间,而这些命名空间大多数有一个顶级的命名空间System。其中System.Data命名空间提供对表示https://www.360docs.net/doc/b35201871.html,结构的类的访问),根据功能划分,System.Data又包含了多个子空间。System.Data命名空间及其子空间所包含的常用类如表1所示。 表1 System.Data命名空间及其子空间的常用类

二、https://www.360docs.net/doc/b35201871.html,数据库访问 下面以一个简单的实例来说明在C#应用程序设计中如可使用https://www.360docs.net/doc/b35201871.html,来访问数据库。 首先用Visual Studio 2008中的C#设计一个如图2所示的窗体。 图2 学生注册信息管理的窗体设计 建立上述窗体的过程如下: (1)启动Visual Studio 2008,然后文件->新建项目,弹出如图3所示的对话框。

图3 新建项目对话框 在新建项目对话框中,选择左侧的项目类型为“Visual C# --Windows”,右侧的模板中选择“Windows 窗体应用程序”,下面输入项目的名称例如studentmis,并设置好存储路径,然后点击确定,生成如图4所示的Form1窗体。 图4 Form1窗体

7种方法连接数据库

连接数据库的方法小结 1.ODBC API ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access , MYSQL还是Oracle数据库,均可用ODBC API 进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 2.MFC ODBC 由于直接使用ODBC API编写应用程序要编制大量代码,开发者往往需要花费很多的精力在非核心代码的维护上,而Visual C++提供了MFC ODBC类,封装了ODBC API,这使得利用MFC ODBC来创建ODBC应用程序非常简便。 3.DAO(Data Access Object) DAO提供了一种通过程序代码创建和操纵数据库的机制,多个DAO构成一个体系结构,在这个体系结构中,各个DAO对象协同工作。MFC DAO是Microsoft提供的用于访问Microsoft jet数据库文件的强有力的数据库开发工具,它通过封装DAO,向程序员提供了DAO操作数据库的手段。 4.OLE DB OLE DB(Object Linking and Embedding, Database, 又称为OLE DB或OLE-DB),一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像). OLEDB位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的应用程序. 你的ADO调用先被送到OLEDB,然后再交由ODBC 处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升.

网络连接数据库

package day01; import java.sql.Connection; import java.sql.DriverManager; public class JDBCConnection { public static void main(String[] args) throws Exception { //注册驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //连接 Connection conn=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.7.134:1521:orcl", "system","tarena"); System.out.println(conn); } } NetCTOSS 电信运营支撑系统 资费管理模块资费: cost/fee 主要功能: 针对资费信息的CURD(增删改查)操作. 常见的企业级应用 OSS : 运营支撑系统 CRM: 客户关系管理 ERP: 企业资源规划 技术: JavaEE开发、JavaWeb开发 JavaSE JavaEE Web技术数据库 常见的软件架构体系: (1) C/S client/server客户端/服务架构 client 需要单独安装客户端软件QQ serve 服务器端软件 优点: 客户端可以单独开发,功能和界面可以非常丰富 缺点: 软件的升级成本高 (2)B/S browser/server浏览器/服务架构 是一种特殊的c/s结构 client: 浏览器Browser IE/Firefox/chrome server: 服务器Web服务器 http协议超文本传输协议简单、无状态的协议请求request和应答response

数据库访问技术

7.2 数据库访问技术 访问数据库中的数据对象时,一般可采用两种访问方式:一是登录用户直接借助DBMS 的数据操纵工具,通过图形或SQL命令接口联机访问;另外一种为程序代码通过应用程序编程接口(Application Programming Interface,API)进行数据库连接验证以及数据操作。两种数据库访问方式,可以抽象为图7.5的层次结构,从中可见中间的接口组件是数据库访问的桥梁与核心,本节主要就该部分的通用接口技术(即API访问方式)部分进行介绍。 图7.5 数据库访问结构示意 根据底层数据操作模式的差异,数据库接口可简单分为:本地(Local)数据库接口和客户机/服务器(Client/Server)数据库接口。 1.本地数据库接口 通过DBMS将用户数据请求转换成为简单的磁盘访问命令,并交由操作系统的文件管理系统执行;然后DBMS从文件管理系统得到数据响应并加以处理。由于DBMS数据文件组织结构的差异,本地型DBMS只能够读取特定的数据源。 2.客户机/服务器数据库接口 数据处理工作分散到工作站和服务器上处理。工作站通过特定的数据库通信API,把数据访问请求传给相应的服务器的后端数据驱动程序。由于不同客户机/服务器数据库管理系统通信机制的差异,异构数据库之间也难以实现透明通信互访。 因此,仅依靠特定DBMS提供的数据库访问接口难以支撑透明的、通用的异构数据库访问。后台数据库管理系统的变更或升级,需要程序员对特定API的重新学习,以及对应用程序代码的改写;而市场上DBMS产品众多,必将进一步加大系统开发人员的学习和维护压力,应用程序与数据源间的独立性难以真正实现。为此,建立更为通用的数据访问技术规范,为程序用户提供一套完整、统一的数据库访问接口,得到了数据库业界广泛认同与支持,并由此产生了众多成熟的数据库访问接口应用技术规范。 到目前为止,主流的数据库访问技术包括ODBC、MFC ADO、RDO、OLE DB、ADO、https://www.360docs.net/doc/b35201871.html,以及JDBC等通用技术标准。这些通用数据库访问技术的出现与发展大大降低了数据库系统开发与维护门槛,改善了数据库系统的移植性、扩展性,极大推动了数据库技术的发展与普及。下面就主流数据库访问技术发展与演化进行介绍。

数据库访问技术简介

数据库访问技术简介 数据库中的数据存放在数据库文件中,我们要从数据库文件中获取数据,先要连接并登陆到存放数据库的服务器。一般来说,访问数据库中的数据有两种方式:一是通过DBMS (Data Base Management System,数据库管理系统)提供的数据库操作工具来访问,如通过SQL Server 2000的查询设计器来提交查询,或者通过SQL Server 2000的企业管理工具来访问。这种方式比较适合DBA对数据库进行管理;二是通过API(Application Programming Interface, 应用编程接口)来访问数据库,这种方式适合在应用程序中访问数据库。 在数据库发展的初期,各个开发商为自己的数据库设计了各自不同的DBMS,因此不同类型的数据库之间数据交换非常困难。为了解决这个问题,Microsoft提出了ODBC(Open Data Base Connectivity,开放数据库互连)技术,试图建立一种统一的应用程序访问数据库接口,使开发人员无需了解程序内部结构就可以访问数据库。 1、Microsoft提出的系列数据库访问技术 1.1、ODBC ODBC是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。应用程序可以使用所提供的API来访问任何提供了ODBC驱动程序的数据库。ODBC规范为应用程序提供了一套高层调用接口规范和基于动态链接的运行支持环境。ODBC已经成为一种标准,目前所有的关系数据库都提供了ODBC 驱动程序,使用ODBC开发的应用程序具有很好的适应性和可移植性,并且具有同时访问多种数据库系统的能力。这使得ODBC的应用非常广泛,基本可用于所有的关系数据库。 要使用ODBC,先要了解以下概念:ODBC驱动管理器、ODBC驱动程序、数据源。它们都是ODBC的组件。ODBC组件之间的关系如图1所示。

数据库系统的访问

第7章数据库系统的访问 对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。 这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S,B/S系统中必须广泛使用访问接口技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。常见的数据库访问接口的技术有固有调用、ODBC、JDBC、OLE DB、DAO、ADO、https://www.360docs.net/doc/b35201871.html, 以及基于XML的数据库访问等几种流行的方式。这其中以ODBC技术和JDBC技术应用最广泛,也是目前最为优秀的访问接口方式。 本章主要对几种常见的数据库访问技术(如固有调用、ODBC、JDBC、OLE DB、DAO、ADO、https://www.360docs.net/doc/b35201871.html,以及基于XML的数据库访问等)进行介绍。 7.1 数据库的访问接口 所谓访问接口是指分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。 访问接口的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。 ⑴网络透明性:能支持所有类型的网络。 ⑵服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的访问接口都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。 ⑶语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。 应用系统访问数据库的接口方式有多种,本节介绍固有调用、ODBC和JDBC。 7.1.1 固有调用 每个数据库引擎都带有自己的包含用于访问数据库的APl函数的动态链接库DLL,应用程序可利用它存取和操纵数据库中的数据。如果应用程序直接调用这些动态链接库,就说它执行的是“固有调用”,因为该调用对于特定的数据库产品来说是“固有” (专用)的。 固有调用接口的优点是执行效率高,由于是“固有”,编程实现较简单。但它的缺点也是很严重的:不具通用性。对于不同的数据库引擎,应用程序必须连接和调用不同的专用的动态链接库,这对于网络数据库系统的应用是极不方便的。 7.1.2 ODBC ODBC是“开放数据库互连”(Open Database Connectivity)的简称。ODBC是Microsoft 公司提出的、当前被业界广泛接受的应用程序通用编程接口(API)标准,它以X/Open和ISO/IEC的调用级接口(CLI)规范为基础,用于对数据库的访问。我们可以用如下图示来说明ODBC概念。

第七讲 VB访问SQL Server2000数据库的方法

第七讲 VB访问SQL Server2000数据库的方法 一、ODBC数据源设置 1、ODBC简介 ODBC Open DatabaseConnectivity开放式数据库互连)是Mircosoft公司有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API Application应用程序编程接口)。这些API利用SQL来完成大部分的任务。ODBC本身提供对SQL语言的支持,用户可以直接将SQL送给ODBC一个基于ODBC的应用程序对数据库操作不依赖于任何DBMS,不直接与DBMS打交道,所有数据库操作由ODBC驱动程序完成。 2、ODBC数据源的创建(建立ODBC数据源) 前台系统Windows 2000 professional系统,后台Windows 2000 Server系统。以Windows 2000 professional为例: (1)单击“开始”/设置/控制面板/管理工具/数据源ODBC,打开“ODBC数据源管理器”,选择“用户DSN or 系统DSN”,单击【添加】按钮,打开“创建用户数据源”对话框,选择“SQL Server”,单击【完成】按钮。

(2)打开“创建新的数据源到SQL Server”窗口: ○1你想用什么名称命名数据源:在名称框中输入xn。 ○2服务器:为网络中数据库服务器(默认是本地服务器Local,可选远程服务器IP)。 ○3登陆ID:xn密码:xn(取决于安装SQL时所指定的密码)。特别注意此处为确保数据库安全起见,数据库管理员可以给用户指定一个用户名及密码。这里为简便起见使用管理员用户名及密码。 ○4更改数据库为:aa(所要使用的数据库)。

数据库访问层的实现

系统数据库操作采用ADO技术,在进行代码设计时,把数据库操作的代码单独写在一个自定义的ado.cpp文件里,包括CADODatabase和CADORecordset两个类分别实现对数据库和记录集的操作,并将这些操作封装在两个类中。 (1)引入ado库 #import "C:\Program Files\Common Files\System\ADO\msado15.dll" \ no_namespace rename("EOF", "adoEOF"),rename("BOF","adoBOF") (2)用_ConnectionPtr对象连接数据库 连接数据库操作中LPCTSTR lpstrConnection作为输入参数,在lpstrConnection参数中设置驱动driver={SQL Server},数据源(本地) Server=127.0.0.1,数据库名称DATABASE=QUEStoreDB,数据库用户名UID,数据库用户密码PWD。运用_ConnectionPtr连接数据源。主要代码如下: BOOL CADODatabase::Open(LPCTSTR lpstrConnection) { HRESULT hr = S_OK; if(IsOpen()) Close(); if(strcmp(lpstrConnection, _T("")) != 0) m_strConnection = lpstrConnection; ASSERT(!m_strConnection.IsEmpty()); try { hr = m_pConnection->Open(_bstr_t(m_strConnection), "", "", NULL); return hr == S_OK; } catch(_com_error &e) { dump_com_error(e); } return FALSE; } (3)用_ConnectionPtr对象执行指令 当对数据库进行插入、删除、更新操作时用此方法。String sql为输入参数,传入SQL(Insert,Delete,Update)语句。主要代码如下: BOOL CADODatabase::Execute(LPCTSTR lpstrExec)

sqlHelp数据库操作类

using System; using System.Collections; using System.Collections.Specialized; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace LiTianPing.SQLServerDAL //可以修改成实际项目的命名空间名称 { ///

/// Copyright (C) 2004-2008 LiTianPing /// 数据访问基础类(基于SQLServer) /// 用户可以修改满足自己项目的需要。 /// public abstract class DbHelperSQL { //数据库连接字符串(web.config来配置) // protected static string connectionString = ConfigurationSettings.AppSettings["ConnectionString"]; public DbHelperSQL() { } #region 公用方法 public static int GetMaxID(string FieldName,string TableName) { string strsql = "select max(" + FieldName + ")+1 from " + TableName; object obj = GetSingle(strsql); if (obj == null) { return 1; } else { return int.Parse(obj.ToString()); } } public static bool Exists(string strSql, params SqlParameter[] cmdParms) { object obj = GetSingle(strSql, cmdParms); int cmdresult;

数据库访问类

本文由星野看星贡献 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace Mysqlserver { ///  /// SqlServerDataBase 的摘要说明 ///  public class SqlServerDataBase { private string strError = null; private int intCount = 0; public SqlServerDataBase() { // // TODO: 在此处添加构造函数逻辑 // } ///  /// 公开方法DBConn,返回数据库连接 ///  /// <returns></returns> public SqlConnection DBconn() { string strConn = "Server=(local);Database=GlobalMeetings;Uid=sa;pwd="; try { return new SqlConnection(strConn); } catch (Exception) { return null; } } ///  /// 公开属性ErrorMessage,返回错误信息 ///  public string ErrorMessage { get { return strError; }

VB访问数据库的方法及接口分析

摘要:本文介绍了几种Visual Basic访问数据库的方法,对这些数据接口的性能进行了比较,并提出相互的转化关系。 1VB访问数据库的方法 VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面以列表的方式列出每一类,及每一类包含的方法。 1.1接口对象法(API) VBSQL:通过DB-Library访问微软的SQL Server。 ODBC API:任何一种ODBC数据源16位和32位。 DAO/Jet:本地的Jet/Access.MDB、顺序索引数据库(ISAM)和任何ODBC数据源。 DAO/ODBC Direct:任何一种ODBC数据源(经过RDO)。 RDO2.0:任何一种ODBC数据源(LevelⅠ或Ⅱ)。 ADO:任何一种ODBC数据源和任何经过OLE DB界面接口的数据源。 1.2数据控件法 Data Control:DAO/Jet数据界面接口。 Data Control/ODBC Direct:DAO/ODBC Direct数据界面接口。 RemoteData Control/RDC:RDO数据界面接口。 Advanced Data Connector/ADC:ADO数据界面接口。 2几种接口的比较 ADC(Advanced Data Connector):高级数据连接器。提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。 ADO(Active Data Objects):Active数据对象。是DAO/RDO的后继产物,ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件

HTML5的SQL数据库访问JavaScript数据

HTML5的SQL数据库访问JavaScript数据 HTML5的网页浏览器的推出,它现在可以为Javascript代码,直接在电脑上存储的数据库中存储的数据交互。 对于大多数程序员数据齐头并进,他们创建的应用程序。通常情况下,应用程序将读取数据,允许用户更新或添加信息,然后将其存储的数据。典型的桌面应用程序,将这些数据存储在用户的计算机数据库,但Web应用程序略有不同。 用户的PC上,他们只能存储有限的数据(如饼干),不得不求助于在中央服务器上存储的数据库(例如使用PHP和MySQL)。这是不可能的客户端语言(如JavaScript)数据库(如SQLite)直接沟通和程序员是无法写入代码如: 然而,与HTML5这一切都变了。程序员现在可以存储在用户的计算机上的数据库。应用程序可以创建表进行选择,插入,更新和删除语句。和程序员可以使用标准的SQL查询。 每个Web浏览器的数据库? 在写只有Safari和Chrome都纳入了HTML5的Web SQL数据库(或更正确,WebDatabase的API - 一个流行的SQLite数据库的子集)的时间,目前还不清楚如果其他浏览器将利用这。事实上,它可能是Firefox 将使用IndexedDB数据库,但都没有,到今天为止,产生了一个纳入数据库的浏览器。 这是一个标准的SQL数据库,是不是它? 只是一个小点值得指出有关Web SQL数据库。任何疑问进行了异步不同步。虽然这是令人难以置信的强大的技术,它意味着很多程序员将需要重新思考的方式在他们的方式在他们结构其方案的流动。 适应异步编程 一个Javascript程序员将开始与一个典型的脚本是: <脚本语言=“JAVASCRIPT”> 功能run_query(SQL){ db.transaction(功能(TX){ tx.executeSql(SQL); });

数据库操作类

using System.Data.SqlClient; public class DataConn { public DataConn() { } public static string strconn = ConfigurationManager.ConnectionStrings["xsconstr"].ConnectionString; public static SqlConnection CreateConn() { SqlConnection conn = new SqlConnection(strconn); return conn; } public static SqlDataReader ExecuterRead(string cmdtext, SqlConnection conn) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; https://www.360docs.net/doc/b35201871.html,mandText = cmdtext; SqlDataReader dr = cmd.ExecuteReader(); return dr; } public static SqlDataReader ExecuterRead(string cmdtext, SqlConnection conn, params SqlParameter[] array1) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; https://www.360docs.net/doc/b35201871.html,mandText = cmdtext; foreach (SqlParameter para in array1) cmd.Parameters.Add(para); SqlDataReader dr = cmd.ExecuteReader(); return dr; } public static int ExecuteNonRead(string cmdtext) { SqlConnection conn = CreateConn(); conn.Open(); SqlCommand cmd = new SqlCommand(cmdtext, conn); int i = cmd.ExecuteNonQuery(); conn.Close(); return i; } public static int ExecuteNonRead(string cmdtext, params SqlParameter[] array) { SqlConnection conn = CreateConn(); conn.Open();

VC++实现数据库访问

一、数据库连接 1、标准的访问数据库的技术 ▲ODBC(Open Database Connectivity,开发数据库互联) ODBC为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供了一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC 驱动程序的关系数据库进行通信。现在,绝大多数关系数据库都提供了ODBC驱动程序,那么我们使用ODBC API就可以访问这些数据库。ODBC的体系结构如下: 我们所编写的客户程序直接和ODBC驱动程序管理器打交道,后者利用ODBC驱动程序所提供的API访问数据库。在访问不同数据库时,需要指定相应的ODBC驱动程序,而后者又由ODBC程序管理器去调用,它会将客户的请求转换为相应的ODBC驱动,传递给数据库。 ▲DAO(Data Access Object,数据访问对象) DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操作Access数据库。该技术很少使用,将逐渐退出历史的舞台。 ▲RDO(Remote Data Object,远程数据对象) 由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),因此,可以为使用关系数据库的应用程序提供更好的性能。 ▲OLE DB(对象链接与嵌入数据库) OLE DB在两个方面对ODBC进行了扩展。首先,OLEDB提供了一个数据库编程的COM 接口;第二,OLEDB提供了一个可用于关系型和非关系型数据源的接口,而ODBC只能访问关系型数据库。通常我们所说的数据库都是指关系型和非关系型数据源的接口,而ODBC 只能访问关系型数据库。通常我们所说的数据库都是指关系型数据库。但是数据库的概念,从广义上来说,除了关系型数据库以外,还包括其他格式的数据源,包括电子表格、文本文件。OLE DB的两个基本结构式OLE DB提供程序和OLE DB用户程序。OLEDB的功能非常强大,但是它对自动化的支持不是很好。OLE DB的体系结构如下:

数据库访问方式

数据库访问的三种方式 访问数据库的方式有三种:直接访问,如访问Paradox和DBase 数据库: 通过ODBC 访问,如访问 Access、Foxpro等数据库: 通过内嵌(Native) 方式访问数据库,如访问SQLServer、 Oracle、DB2等。在Delphi中,可以使用Table控件或/和Query控件来访问数据库,二者的设置和用法部差不多,因此下面仅 Table控件为例说明这三种方式的特点和用法。 1.直接访问Delphi可以直接访问Paradox 和IDBase这两个桌面型的数据库系统。访问这两种类型的数据库时不需要特别的设置,只需要把文件路径赋给Table 控件的属性DatabaseName就可以访问该路径下的数据库了。当然,也可以事先建立映射数据库路径的数据库别名,然后把Table控件的DatabaseName属性设置为相应的数据库别名。 2. 通过ODBC访问访问Paradox和DBase以外的数据库,通常是通过ODBC来实现的Delphi 可以访问支持ODBC的数据库系统,如Access、SQLServer 和Oracle 等。 ODBC 访问数据当然,通过库时,首先要使用Windows的控制面板或Delphi的数据库引擎(BDE) 建立ODBC数据源的名称赋给Table控件的属性DatabaseName而达到访问该数据库的目的。这种方式的弊端是在程序运行时由Delphi系统自动弹出登录到数据库的英文界面的窗口,既不美观又不便于控制。因此,笔者建议在数据库应用程序中使用Database 控件来登录到数据库系统。把Table控件与Database控件关联的方法是把其DatabaseName 属性值指定为Database控件的DatabaseName属性值。个Database控件可以管理若干个Table 控件。和Database控件建立关联以后,只要该Database控件已经和数据库建立了连接,Table控件就可以直接访问数据库而无须再次登录。 3. 通过内嵌方式访问Delphi 中可以不通过ODBC,而以内嵌方式访问SQLServer、Oracle、DB2 等数据库系统。这需要使用数据库别名来指定数据库,数据库别名可以事先建立,也可以在程序运行时动态创建。前者称为静态别名,后者称为动态别名。使用数据库别名来访问数据库的方法和使用。DBC数据源的情形相同,这里不再累述。通过内嵌方式访问数据库的静态别名必须在BDE中建立。以访问SQL Server 数据库为例,在建立别名时必须指定数据库服务器的名称 (SERVER NAME) 、主机名(HOSTNAME) 以及要访问的数据库名称(DATABASE NAME) ,可以指定登录用户名(USERNAME) 和口令(PASSWORD) 等。通过动态创建的别名来访问数据库必须使用Database控件。如何设置Database控件中访问数据库的参数呢?用鼠标双击Database控件,出现参数设置窗口,在"Drivername" 栏选择要访问的数据库系统,如"MSSQL",然后选择按钮"Defaults",就会把BDE 中该数据库系统所需的参数名称和缺省值加入到"Parameteroverrides"列表中。根据实际情况更改参数中的"SERVERNAME仁"DATABASE NAME" 等工页。然后选择按钮"OK"就可以了。需要说明的两点是,以内嵌方式访问数据库需要在安装Delphi13.0时指定安装SQLLit山Query 控件的SQL语句不能以分号结尾。结论通过内嵌方式访问数据库与通过ODBC访问数据库相比,前者的速度要快些。而且,内嵌方式可以在程序中动态地设置连接数据库所需的参数,用户不必设置。DBC数据源,这就降低了对用户技术水平的要求,并且减少了用户的工作量。从系统配置的难易和复杂程度来看,使用内嵌方式开发出的数据库应用系统更便于普通用户使用。因此,笔者建议在开发较大型的应用系统时,最好通过内嵌方式来访问数据库。

实验:数据库的连接与访问

实验一数据库的连接与访问(分两次实验完成)实验目的: 1)掌握https://www.360docs.net/doc/b35201871.html,的常用对象 2)掌握常用https://www.360docs.net/doc/b35201871.html,的程序编写方法 3)能够实现简单的查询和数据更新功能 注意:注意查看红色字体部分内容。 https://www.360docs.net/doc/b35201871.html,是.NET Framework中的一系列类库,提供了在.NET开发中数据库所需的操作的类。在.NET应用程序开发中,C#可以使用https://www.360docs.net/doc/b35201871.html,。 可以将https://www.360docs.net/doc/b35201871.html,看做是一个介于数据源和数据使用者之间的转换器,如图1所示。https://www.360docs.net/doc/b35201871.html,接收使用者语言中的命令,如连接数据库、返回数据集等,然后将这些命令转换成可以在数据源中正确执行的语句。 图1 https://www.360docs.net/doc/b35201871.html,的功能示意图 一、https://www.360docs.net/doc/b35201871.html, 命名空间及其常用类 https://www.360docs.net/doc/b35201871.html,体系结构的类包含在System.Data命名空间中(命名空间相当于一个容器,它包含一组定义的类或结构,命名空间也可以嵌套在另一个命名空间中。.NET类库提供了很多类,根据类的功能不同,又划分了很多命名空间,而这些命名空间大多数有一个顶级的

命名空间System。其中System.Data命名空间提供对表示https://www.360docs.net/doc/b35201871.html,结构的类的访问),根据功能划分,System.Data又包含了多个子空间。System.Data命名空间及其子空间所包含的常用类如表1所示。 表1 System.Data命名空间及其子空间的常用类

二、https://www.360docs.net/doc/b35201871.html,数据库访问 实验内容: 一、设计如下图所示窗体

图2 学生注册信息管理的窗体设计 建立上述窗体的过程如下: (1)启动Visual Studio 2008,然后文件->新建项目,弹出如图3所示的对话框。

C#打造自己通用的数据库访问类

C#打造自己通用的数据库访问类 using System; using System.Collections.Generic; using System.Data; using https://www.360docs.net/doc/b35201871.html,mon; namespace NetSkycn.Data { ///

/// 通用数据库访问类,封装了对数据库的常见操作 /// 作者:周公 /// 创建日期:2011-07-18 /// 修改日期:2012-04-12 /// 新浪微博地址:https://www.360docs.net/doc/b35201871.html,/zhoufoxcn /// public sealed class DbUtility { public string ConnectionString { get; set; } private DbProviderFactory providerFactory; /// /// 构造函数 /// /// 数据库连接字符串 /// 数据库类型枚举,参见 public DbUtility(string connectionString, DbProviderType providerType) { ConnectionString = connectionString; providerFactory = ProviderFactory.GetDbProviderFactory(providerType); if (providerFactory == null) { throw new ArgumentException("Can't load DbProviderFactory for given value of providerType"); } } /// /// 对数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// 执行增删改语句所需要的参数 /// public int ExecuteNonQuery(string sql, IList parameters) {

数据访问接口

课程名称Web程序设计 实验名称实验四、https://www.360docs.net/doc/b35201871.html,数据访问接口日期 学生学号姓名班级 实验目的: 1.熟悉https://www.360docs.net/doc/b35201871.html,数据库访问技术。 2.掌握Connection、Command对象的使用。 3.掌握DataReader、DataAdapter对象操作数据库数据的方法。 4.掌握VS2008中创建数据库的方法。 实验条件: 电脑一台、能上网查阅资料。 实验内容与步骤: 1.实验内容一 (1)要求 1. 新建名字为“Accessdatabase_ Exercise”的网站。 2. 在网站的App_Data文件夹中,建立数据库“MyDatabase_ Exercise.mdf”。 3. 在该数据库中建立一张职工表,并添加一些模拟的职工记录。其关系模式如下: Employees(ID,NAME,SEX,AGE,Date of work, of Photo) 4. 在web.config配置文件中,修改“”标记如下。 5. 添加一个网页,利用Command对象实现新职工的录入。 6. 添加一个网页,利用Command对象实现删除指定编号的职工记录。 7. 添加一个网页,利用Command对象实现修改指定编号的职工信息。 8. 添加一个网页,利用DataAdapter对象实现查询职工信息,并显示到网页的Label控件上。 (2)源代码和实验结果 网站结果如下图4-1所示。 图4-1

相关文档
最新文档