在VC程序中,访问数据库是一项非常普遍的需求。而OLE DB则是一种被广泛使用的访问数据库的技术。本文将介绍如何在VC程序中使用OLE DB来访问数据库。
一、OLE DB的基本概念
1. OLE DB是什么?
OLE DB是一种面向对象的数据库访问技术,它提供一个标准的接口,使得开发人员可以通过统一的方式访问不同类型的数据源。
2. OLE DB的组成部分
OLE DB由三部分组成:数据提供者、数据消费者和数据存储器。
– 数据提供者:提供对数据的访问,可以是关系数据库、文件系统等。
– 数据消费者:消费提供者提供的数据,可以是应用程序、报表等。
– 数据存储器:存储数据的地方,可以是关系数据库、文件系统等。
3. OLE DB的优点
– OLE DB提供了一个标准的接口,可以方便地访问不同类型的数据源。
– OLE DB性能较好,能够提供高速的数据访问。
– OLE DB具有很好的扩展性和兼容性。
二、在VC程序中使用OLE DB访问数据库的步骤
1. 创建OLE DB连接对象
在使用OLE DB访问数据库时,首先需要创建一个连接对象。连接对象可以通过CoCreateInstance函数创建。
hr = CoCreateInstance(CLSID_Connection, NULL, CLSCTX_INPROC_SERVER, IID_IDBConnection, (void**)&pConnection);
2. 打开数据库连接
连接对象被创建后,需要使用其Open函数打开数据库连接。
hr = pConnection->Open(dsName, userName, password, NULL);
if (FLED(hr))
pConnection->Release();
return FALSE;
其中,dsName代表数据源名称(可以是DSN或者连接字符串),userName和password分别是登录数据库时使用的用户名和密码。
3. 创建命令对象
在打开数据库连接之后,可以创建一个命令对象,用于执行一些操作,例如执行SQL语句、调用存储过程等。
hr = pConnection->CreateCommand(NULL, IID_IDBCommand, (IUnknown**)&pCommand);
4. 执行SQL语句
创建命令对象后,可以使用其Execute函数执行SQL语句。
hr = pCommand->Execute(NULL, IID_IRowset, NULL, NULL, (IUnknown**)&pRowset);
其中,pRowset是返回的结果集对象。
5. 遍历结果集
执行SQL语句后,可以使用结果集对象pRowset来遍历结果集。
hr = pRowset->GetNextRows(NULL, 0, 1, &cRowsObtned, &prghRows);
while (hr == S_OK && cRowsObtned > 0)
//遍历结果集
其中,prghRows是获取的行对象句柄,可以使用其GetData函数获取具体数据。
6. 关闭连接
在使用完连接后,需要使用其Close函数关闭连接。
pConnection->Close();
三、程序示例
下面是一个使用OLE DB访问数据库的简单示例。该示例使用SQL Server数据库,并执行一个简单的查询语句:
#include “stdafx.h”
int _tmn(int argc, _TCHAR* argv[])
HRESULT hr;
//创建连接对象
CDataSource ds;
hr = ds.OpenFromInitializationString(L”Provider=SQLOLEDB;Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=SSPI;”);
if (FLED(hr))
return FALSE;
//创建命令对象
CCommand> CMD;
hr = cmd.Open(ds, L”SELECT * FROM MyTable”);
if (FLED(hr))
return FALSE;
//遍历结果集
CMyData>服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle需要指定这个参数。碧歼悄
7 LogPass string 登录到数据库服务器上的用户口令。这个属性可设可不设,但Sybase和Oracle需要指定口令。
8 ServerName string 数据库服务器名。
9 AutoCommit boolean 指定是否将数据库设置成自动提交所有事务。默认是False,也就是说,必须在应用程序中进行事务管理,并在适当的时候对数据库提交事务。如果选择True,则每个事务都由系统自动提交。
10 DBParm string 用于向数据库传递特殊信息的属性。
11 SQLCode long 指示最近一次SQL操作失败或成功。它的取值为: 返回结果 0 无错误。 -1 出现一个错误。 100 没有检索到数据。
12 SQLNRows long 最近一次SQL操作影响的行数,数据库不同其含义也不同。
13 SQLDBCode long 数据库错误代码。不同的数据库的含义不同。
14 SQLErrText string 相应于SQLDBCode属性中错误码的文字说明。
15 SQLReturnData string 返回DBMS执行SQL的附加信息,不同的DBMS其值不同。
2.我常见到做好的PB程序使用.ini文件来控制与数据库连接,可以方便的进行应用程序移植只需修改其中与数据库连接参数即可,我想问这些.ini文件只能使用手工编写吗,我见到很多.ini文件参数极多不象手写好象是机器生成的,不知道如何生成啊?请大家指教
1、其实PB中在新建—点TOOL—-FILE EDIT 可以生成(改镇编辑)INI文件。最直接就是工具栏中的EDIT图标。
2、机器生成代码是:点DATABASE图标—–选择连接方式。如:选 MSS MICROSOFT SQL SERVER 右键-NEW PROFILE 按要求填定一些参数后在–PREVIEW中可以看到代码,把它复制到INI文件中就行了。
3.编程经验–PB数据库连接
通过这些年的信息系统开发经验,使悔渣我对POWERBUILDER的理解更进一步,最近在开发某子系统模块时,遇到了一个奇怪的问题,这里给大家介绍一下.
通常在使用PB和数据库管理系统(DBMS)连接时,使用两种方式:
一、开放数据源接口(ODBC)连接
ODBC是通过支持美国微软公司开放服务结构(WOSA,Windows Open Services Architecture)中的一部分.在PB 中通过配置 SQLCA.DBMS=‘ODBC’对象的属性可使应用程序通过ODBC连接到数据库。
ODBC的具体配置包含了数据源、驱动程序类型、缓冲池等各种细节参数。
例子:
SQLCA.DBMS = “ODBC”
SQLCA.AutoCommit = False
SQLCA.DBParm=”C,C”
二、专用数据库接口
每个数据库管理系统(DBMS)均提供相应的客户端驱动,为了更好的服务于数据库。
在这里我们使用的是Microsoft sqlserver 2023 的客户端程序。通过设置 SQLCA.DBMS =”MSS Microsoft SQL Server” 使客户端通过专用数据库接口连接到数据库。
该类接口的参数配置除了服务器名、数据库名、LogId、LogPass外还包含了连接协议等用户验证方式等,可通过服务器端或客户端的配置程序进行配置。
SQLCA.dbms= “MSS Microsoft SQL Server” //接口类型
SQLCA.database= “master” //数据库
SQLCA.userid= “”
SQLCA.dbpass= “”
SQLCA.logid= “sa”
SQLCA.logpass= “xxxx”
SQLCA.serverName= “.\xxx”//服务器名
SQLCA.dbparm= “Commit”
SQLCA.autocommit= false
以上介绍的是PB与数据库连接时常用的方法。
往往根据不同的应用环境选择连接方式, 在单机环境下多采用的是ODBC连接,因为在发行环节上相对要容易些。在网络环境下多采用专用数据库连接,这样可以提高系统的可靠性与执行效率。专用数据库的发行环节往往要配上相应DBMS客户端的动态连接库(DLL),并把它.
PB与ASA数据库连接问题!
一.连接步骤
1.添加数据源。WINDOWS98中—-我的电脑—控制面版—-ODBC数据源32位—–系统DSN—添加—选择你使用的数据库
2.在工具条上点击DB PROFILE 选择已建立好的数据库连接,单击EDIT在弹出的对话框中选PREVIEW里面就是连接数据库的语句,COPY就OK了。
二.DB_profile写法(以lin.com的tax例程为例)
Database=test
三.打包所需文件
参看以下文章:
四.容易出现的问题及解决方法
导致ASA数据库无法连接的问题有以下几种:
1、ODBC配置错误。没有配置数据源,数据库的用户名或口令错误等都会导致数据库无法连接。

解决的办法:检查数据源的配置,如果没有在ODBC中配置数据源则按照向导添加数据源即可;口令错误只需改为正确的即可。
2、连接时提示LOG文件错误。这样的问题大多出现在重装系统后、源码移植到其他系统、数据库文件路径改变之后。
解决的办法:在创建ASA数据库的时候不创建LOG文件,如果已经创建了LOG文件则可以利用PB自带的工具Sybase central来去掉LOG文件和数据库文件的关联。操作步骤如下:
a)启动Sybase central在左边的树型目录中选择Utilities;
b)双击右边出现的条目中的change log file settings,直接next;
c)点Browse选择需要去除log文件的数据库文件,选好后next;
d)这里你会看到一些数据库的信息,log文件名,文件大小等。next;
e)去掉Maintin the following transaction log file前面的对勾,Finish;
f)配置ODBC连接数据库就可以了。
3、数据库文件损坏。此类错误一般不常见,可能由于病毒破坏或误操作引起。
解决的办法:如果以前有备份用备份文件覆盖原文件即可,如果没有备份文件就只能重新建库了!
PB8如何使用OLE DB练到ASA数据库
(本文来自sybase网站 翻译 by 金色年华)
Connecting to ASA Server (7.01 GA) via OLE DB in PowerBuilder 8
Adaptive Server Anywhere includes an OLE DB provider named ASAProv. One of the features of ASAProv (dboledb7.dll) is that you do not have to deploy ODBC. In other words, you can connect to an ASA>香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
VC中ADO连接SQLSERVER的几种标准方式?
VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。 正文一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。 ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。 ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。 ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。 之所以称为 ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。 OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。 OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。 OLE DB 为任何数据源峁┝烁咝阅艿姆梦剩
Java中使用JDBC连接数据库的步骤?
1.注册驱动();//这是连接mysql数据库的驱动
2.获取数据库连接 conn=();
3.获取表达式=(jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK,root,null);//三个参数分别是数据库连接的URL,用户名,密码
4.执行 rs=(select * from user);
5.显示结果集里面的数据while(()){((1));((username));((password));();}
//执行插入语句//(insert into user values(1,中文,345));
6.释放资源();();();
数据源管理器怎么配置?
1 利用ODBC可以统一FoxPro、Access或Oracle数据库的方式处理.2 应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。 这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 3 以microsoft access为例,如果在c:\myfile\文件夹里创建了一个名为的数据库文件,其注册步骤如下:在控制面板里找到“odbc数据源”图标,打开数据源管理器的交互界面;笔者创建的数据库文件是供本机上的用户使用的,所以这里选择“用户 dsn”;然后按下“添加”按钮,在弹出的数据源管理器对话框里,为自己所要创建的数据源选择一个驱动程序,本文的数据库文件是用microsoft access创建的,所以要选择“microsoft access driver (*)”;按“完成”按钮后,进入一个标题为“odbc microsoft access 安装”的界面,在其中设置“数据源名”为“mydatasource”,选取数据库文件 “c:\myfile\”,然后确定即可。 这样我们就完成了一个简单的odbc数据源的注册。 当然,在以上的步骤中,用户可以根据自己的不同需要,设置不同的选项。
发表评论