您的位置:首页 > 数据库

使用OTL连接数据库有感篇(一)

2017-02-14 16:07 1021 查看
在使用C++连接数据库的时候,你可以选择ODBC或者ADO等方式,但是OTL连接数据库确实挺方便的,它所有的代码都放在一个头文件otlv4.h中,我们在写程序的时候直接将头文件包含进来,就可以调用其中的类中的函数进行数据库的连接,增删改查等操作。最近一直在使用Oracle数据库,这次就使用OTL连接Oracle数据库,Oracle数据库提供一个调用的接口(OCI),是Oracle公司开发的一个应用程序开发工具,是一个通过访问Oracle数据库的服务器,控制各类sql语句的执行,进而创建应用程序接口(API),OTL就是通过OCI对Oracle数据库进行操作。

下面就是我写过的一个实际例子,比较简单,只是为了登录数据库,并不进行其他操作,主要目的是学会使用OTL:

1. 所需文件:

首先我们应该从网上下载OTL的源码也就是 otlv4.h 这个头文件。

然后打开Oracle的安装目录E:\product\11.2.0\dbhome_1\OCI 找到oci文件夹将整个文件夹拷贝出来,文件夹中包含include文件夹和lib文件夹。

2.示例:

打开VS2008创建一个MFC工程,名称为mfc_one. (其它的就不多说了,这个都很清楚),然后打开工程目录,将OCI这个文件夹直接拷贝到工程目录下,在工程目录下新建一个文件夹OTL,将otlv4.h这个头文件放进这个文件夹中。

接下来就是配置项目属性,将文件包含进来,在mfc_oneDlg.h和mfc_oneDlg.cpp中都需要将otlv4.h这个头文件包含进去 (#include"otlv4.h").

然后在 项目->项目属性->c/c++->常规中附加包含目录,如下图所示:



$(SolutionDir) 是VS中的宏定义,表示的就是当前的工程目录。

然后在项目->项目属性->连接器->常规 中添加附加库目录,如下图所示:



在 项目->项目属性->连接器->输入 选项中配置 附加依赖项如下图所示:



上面这些配置 都是为了包含OCI,创建OCI环境。

下面就是链接数据库的一个例子:

void Cmfc_oneDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
// 数据库连接
UpdateData(TRUE);
sConnect.Format("%s/%s@%s",m_DBUser,m_DBPassword,m_DBObject);

try
{
m_db.rlogon("sConnect.GetBuffer()"); // connect to Oracle
}
catch (otl_exception& p)
{
TRACE(_T("Oracle connecterror(msg:%s, stm_text: %s, sqlstate: %s, var_info: %s)"), p.msg, p.stm_text, p.sqlstate, p.var_info);
}
}


完成这些以后,需要说明一下,连接字符串的格式,一般是 “用户名/密码@TNS”

和实用工具连接oracle数据库一样,同样需要配置tnsnames.ora文件,这个文件 使用oracle数据库的都不会陌生下面是我的该文件配置:

# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)


编译好程序之后 需要将oci.dll和可执行文件放在一起,不然程序会报错,

配置好环境,其他操作就可以自己参照源码中的格式自己操作,现在网也有好多OTL的示例,有兴趣的话可以参考一下,我也是刚接触OTL,认识比较浅,希望大神指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: