怎样用vc++ 6.0访问SQL Server数据库

怎样用vc++ 6.0访问SQL Server数据库,第1张

从功能简单的数据库(如Jet Engine)到复杂的大型数据库系统(如oracle),VC++6.0都提供了一些编程接口。本文主要介绍以下五种: 1.ODBC API;2.MFC ODBC类;3.MFC DAO类;(数据访问对象)4.MFC的OLE/DB;5.ActiveX数据对象(ADO)。6.RDO远程数据访问

1.开放数据库连接(ODBC API):提供了一个通用的编程接口,允许程序与多种不同的数据库连接。它为Oracle,SQL Server,MS Excel等都提供了驱动程序,使得用户可以使用SQL语句对数据库进行直接的底层功能 *** 作。在使用ODBC API时,用户须引入的头文件为 "sql.h ", "sqlext.h ", "sqltypes.h "。用ODBC API创建数据库应用程序遵循一定的基本步骤:

第一步是分配ODBC环境,使一些内部结构初始化。完成这一步,须分配一个SQLHENV类型的变量在ODBC环境中做句柄使用。

第二步是为将要使用的每一个数据源分配一个连接句柄,由函数SQLALLocHandle()完成。

第三步是使用SQLConnect()把连接句柄与数据库连接,可以先通过SQLSetConnectAttr()设置连接属性。

然后就可以进行SQL语句的 *** 作,限于篇幅,相关的函数就不具体介绍了,读者可以参考相关书籍。

*** 作完成后,用户取回相应的结果,就可以取消与数据库的连接。

最后需要释放ODBC环境。

ODBC API的特点是功能强大丰富,提供了异步 *** 作,事务处理等高级功能,但相应的编程复杂,工作量大。

2.MFC ODBC类:MFC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口,使得用户可以不须处理ODBC API中的繁杂处理就可以进行数据库 *** 作。主要的MFC ODBC类如下。

CDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以 *** 作数据源。应用程序可使用多个CDatabase对象:构造一个对象并调用OpenEx()成员函数打开一个连接。接着构造CRecordSet对象以 *** 作连接的数据源,并向CDatabase对象传递记录集构造程序指针。完成使用后用Close()成员函数销毁CDatabase对象。一般情况下并不需要直接使用CDatabase对象,因为CRecordSet对象可以实现大多数的功能。但是在进行事务处理时,CDatabase就起到关键作用。事务(Transaction)指的是将一系列对数据源的更新放在一起,同时提交或一个也不提交,为的是确保多用户对数据源同时 *** 作时的数据正确性。

CRecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合-记录集。记录集有两种形式:snapshot和dynaset。前者表示数据的静态视图,后者表示记录集与其他用户对数据库的更新保持同步。通过CRecordSet对象,用户可以对数据库中的记录进行各种 *** 作。

CRecordView类:CRecordView对象是在空间中显示数据库记录的视图。这种视图是一种直接连到一个CRecordSet对象的格式视图,它从一个对话框模板资源创建,并将CRecordSet对象的字段显示在对话框模板的控件里。对象利用DDX和RFX机制,使格式上的控件和记录集的字段之间数据移动自动化,也就是说,用户甚至不要编写一行代码就可以实现简单的数据库记录查看程序。

CDBException类:由Cexception类派生,以三个继承的成员变量反映对数据库 *** 作时的异常:

m_nRetCode:以ODBC返回代码(SQL_RETURN)的形式表明造成异常的原因。

m_strError:字符串,描述造成抛出异常的错误原因。

m_strStateNativeOrigin:字符串,用以描述以ODBC错误代码表示的异常错误。

MFC数据库类成员函数都能抛出CDBException类型的异常,所以在代码对数据库进行 *** 作后监测异常是正确做法。

MFC ODBC类在实际开发中应用最广,因为它功能丰富, *** 作相对简便。

3.MFC DAO(数据访问对象)编程:DAO用于和微软的Access数据库接口。在数据库应用程序如果只需与Access数据库接口时,使用DAO编程较方便。其主要类如下。

CDaoWorkspace:CDaoWorkspace对象可以让一个用户管理从登陆到离开期间,指定的密码保护的数据库会话全过程。大多数情况下不要多个工作区也不要创建明确的工作区对象。因为在打开数据库和记录集对象时,它们可以使用DAO缺省工作区。

CDaoDatabase:代表一个连接,类似上述CDatabase类。

CDaoRecordSet:用来选择记录集并 *** 作,类似上述CRecordSet类。

CDaoRecordView:类似上述CRecordView类。

CDaoException:类似上述CDBException类。

CDaoTableDef:表示基本表或附加表的定义。每个DAO数据库对象包括一个称为TableDef的收集,包含所有存储的DAO表定义对象。CDaoTableDef对象可以用来控制表定义。

CDaoQueryDef:CDaoQueryDef对象表示了一个查询定义(querydef)。

CDaoFieldExchange:支持数据库类使用的DAO字段交换(DFX)例程。也可处理事务,类似MFC ODBC类。

MFC DAO仅用来支持Access数据库,应用范围相对固定。

4.OLE DB:OLE DB在数据提供程序和用户之间提供了灵活的组件对象模型(COM)接口,这种灵活性有时会使得 *** 作复杂化。OLE DB框架定义了应用的三个基本类。

数据提供程序Data Provider:拥有自己的数据并以表格形式显示数据的应用程序。提供OLE DB的行集COM接口,期显示范围可以从单一数据表格的简单提供者知道更复杂的分布式数据库系统。

使用者Consumers:使用OLE DB接口对存储在数据提供程序中的数据进行控制的应用程序。用户应用程序归为使用类。

服务提供程序Service Provider:是数据提供程序和使用者的组合。服务提供程序没有自己的数据,但使用

OLE DB使用者接口来访问存储在数据提供程序中的数据。然后,服务提供程序通过打开数据提供程序接口使得数据对使用者有效。服务提供程序常用于向应用程序提供高层次服务,比如高级分布式查询。

OLE DB编程时,用户使用组件对象开发应用程序。这些组件有:

枚举器:用于列出可用的数据源;

数据源:代表单独的数据和服务提供程序,用于创建对话;

对话:用于创建事务和命令;

事务:用于将多个 *** 作归并为单一事务处理;

命令:用于向数据源发送文本命令(SQL),返回行集;

错误:用于获得错误信息。

5.ActiveX数据对象(ADO):是微软提供的面向对象的接口,与OLE DB类似,但接口更简单,具有更广泛的特征数组和更高程度的灵活性。ADO基于COM,提供编程语言可利用的对象,除了面向VC++,还提供面向其他各种开发工具的应用,如VB,VJ等。ADO在服务器应用方面非常有用,特别是对于动态服务器页面ASP(Active Server Page)。

ADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并只使用需要处理的对象。下面的对象类组成了ADO接口。

Connection:用于表示与数据库的连接,以及处理一些命令和事务。

Command:用于处理传送给数据源的命令。

Recordset:用于处理数据的表格集,包括获取和修改数据。

Field:用于表示记录集中的列信息,包括列值和其他信息。

Parameter:用于对传送给数据源的命令之间来回传送数据。

Property:用与 *** 作在ADO中使用的其他对象的详细属性。

Error:用于获得可能发生的错误的详细信息。

在VC++使用ADO需要进行COM *** 作,详细方法在此就不赘述了。

在当今流行的分布式开发环境下,VC++6.0在数据库开发方面有较强的优势,学会

在不同的场合选用不同的技术,对开发人员来说是必要的技术。

JDBC是由Sun公司制定的一套访问数据库的规范,除了DriverManager外,其他的全是接口,接口的具体实现由数据库厂商去实现(所以用JDBC需要添加数据库驱动包,驱动包里面的类就是JDBC规范那些接口的实现类),这样,程序员用JDBC *** 作所有实现这个规范的数据库都是一样的方法,只是针对不同的数据库sql可能不同。

Hibernate的底层是由JDBC去实现的,是对JDBC的封装,用hibernate的HQL语句,就可以不用考虑数据库之间的差异,因为hibernate会根据配置文件里面的dialect(数据库方言)和ORM配置文件把HQL语句翻译成能适应当前数据库的sql语句,然后从底层用JDBC去执行(增加了上层的处理,所以效率比JDBC慢),并根据映射文件把相应字段的结果封装到对象的相应属性中。

ibatis也是一个持久层框架,也是对JDBC的封装,但是效率比hibernate略高,因为ibatis不是用框架去生成相应的sql,而是由程序员自己写sql,然后底层的JDBC去执行,并通过映射文件,将SQL所需的参数,以及返回的结果字段映射到指定 PO类,因为少了类似hibernate把HQL翻译成SQL的过程,所以ibatis效率比hibernate更高。

在大型的项目中,尤其是大数据量的地方,一般都不用hibernate,因为用hibernate是以牺牲效率为代价的(尤其是大批量处理的时候尤为明显),最近我做了一个大批量处理几百万条数据的功能,我直接绕过公司框架的API,直接从底层用JDBC去做,效率高了不少。

C/S Client/Server

B/S Browser/Server

区别其实还是挺大的。

找篇文章给你看看,写的不错--

当今世界科学技术飞速发展,尤其以通信、计算机、网络为代表的互联网技术更是日新月异,令人眼花燎乱,目不睱接。 由于计算机互联网在政治、经济、生活等各个领域的发展、运用以及网络的迅速普及和全社会对网络的依赖程度,计算机网络已经成为国家的经济基础和命脉,成为社会和经济发展强大动力,其地位越来越重要。但是,由于主流技术研发企业和用户对“B/S”和“C/S”技术谁优谁劣、谁代表技术潮流发展等等问题的争论不休,已经给检察机关使用“OA(办公)”和“案件管理”软件工作开展带来困惑,本文就此两项技术发展变化和应用前景做些探讨,供同行参考。

一、什么是C/S和B/S

要想对“C/S”和“B/S”技术发展变化有所了解,首先必须搞清楚三个问题。

第一、什么是C/S结构。

C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的 *** 作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。

第二、什么是B/S结构。

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。

以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和 *** 作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。

第三、管理软件主流技术。

管理软件技术的主流技术与管理思想一样,也经历了三个发展时期。首先,界面技术从上世纪DOS字符界面到Windows图形界面(或图形用户界面GUI),直至Browser浏览器界面三个不同的发展时期。其次,今天所有电脑的浏览器界面,不仅直观和易于使用,更主要的是基于浏览器平台的任何应用软件其风格都是一样的,使用人对 *** 作培训的要求不高,而且软件可 *** 作性强,易于识别;再者,平台体系结构也从过去单用户发展到今天的文件/服务器(F/S)体系、客户机/服务器(C/S)体系和浏览器/服务器(B/S)体系。

二、C/S和B/S 之比较

C/S和B/S是当今世界开发模式技术架构的两大主流技术。C/S是美国 Borland公司最早研发,B/S是美国微软公司研发。目前,这两项技术以被世界各国所掌握,国内公司以C/S和B/S技术开发出产品也很多。这两种技术都有自己一定的市场份额和客户群,各家企业都说自己的管理软件架构技术功能强大、先进、方便,都能举出各自的客户群体,都有一大群文人墨客为自己摇旗呐喊,广告满天飞,可谓仁者见仁,智者见智。

1、C/S架构软件的优势与劣势

(1)、应用服务器运行数据负荷较轻。

最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何 *** 作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。

(2)、数据的储存管理功能较为透明。

在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。

(3)、C/S架构的劣势是高昂的维护成本且投资大。

首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的 *** 作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。

其次,传统的C/S结构的软件需要针对不同的 *** 作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。

2、B/S架构软件的优势与劣势

(1)、维护和升级方式简单。

目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的 *** 作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。

(2)、成本降低,选择更多。

大家都知道windows在桌面电脑上几乎一统天下,浏览器成为了标准配置,但在服务器 *** 作系统上windows并不是处于绝对的统治地位。现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器 *** 作系统的选择是很多的,不管选用那种 *** 作系统都可以让大部分人使用windows作为桌面 *** 作系统电脑不受影响,这就使的最流行免费的Linux *** 作系统快速发展起来,Linux除了 *** 作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。

比如说很多人每天上“网易”(原文为新浪)网,只要安装了浏览器就可以了,并不需要了解“网易”的服务器用的是什么 *** 作系统,而事实上大部分网站确实没有使用windows *** 作系统,但用户的电脑本身安装的大部分是windows *** 作系统。

(3)、应用服务器运行数据负荷较重。

由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。

3,C/S 与 B/S 区别

Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的。

(1)、硬件环境不同:

C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务。

B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例如电话上网, 租用设备, 信息自己管理, 有比C/S更强的适应范围, 一般只要有 *** 作系统和浏览器就行。

(2)、对安全要求不同

C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强。 一般高度机密的信息系统采用C/S 结构适宜,可以通过B/S发布部分可公开信息。

B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群。

(3)、对程序架构不同

C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。

B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上。 比C/S有更高的要求,B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统。SUN和IBM推的JavaBean构件技术等,使B/S更加成熟。

(4)、软件重用不同

C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好。

B/S 对的多重结构,要求构件相对独立的功能。 能够相对较好的重用。就如买来的餐桌可以再利用,而不是做在墙上的石头桌子。

(5)、系统维护不同

系统维护是软件生存周期中,开销大,相当重要

C/S 程序由于整体性,必须整体考察,处理出现的问题以及系统升级难, 可能是再做一个全新的系统。

B/S 构件组成方面构件个别的更换,实现系统的无缝升级。 系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。

(6)、处理问题不同

C/S 程序可以处理用户面固定,并且在相同区域, 安全要求高的需求,与 *** 作系统相关, 应该都是相同的系统。

B/S 建立在广域网上, 面向不同的用户群,分散地域, 这是C/S无法作到的,与 *** 作系统平台关系最小。

(7)、用户接口不同

C/S 多是建立在Window平台上,表现方法有限,对程序员普遍要求较高。

B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流, 并且大部分难度减低,降低开发成本。

(8)、信息流不同

C/S 程序一般是典型的中央集权的机械式处理,交互性相对低。

B/S 信息流向可变化, B-B、 B-C、 B-G等信息流向的变化, 更象交易中心


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9950914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存