[转]PROC简单使用用例--VC连接ORACLE
Posted heihei36
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]PROC简单使用用例--VC连接ORACLE相关的知识,希望对你有一定的参考价值。
操作系统:windows 7
数据库版本:oracle 10g
VS版本:VS2010
前言:连接ORACLE的方式有很多,此处仅以PROC为例,说明如何连接oracle,有不妥之处,望诸位看官指出,学习共进。
一、安装oracle 10g对应的客户端版本。
注意事项:做好客户配置,以本机为例:D:\\oracle\\product\\10.2.0\\client_2\\NETWORK\\ADMIN\\tnsnames.ora文件为
# tnsnames.ora Network Configuration File: d:\\oracle\\product\\10.2.0\\client_2\\network\\admin\\tnsnames.ora
# Generated by Oracle configuration tools.
DB_DEMO =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.222)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db_demo)
)
)
host:ORACLE服务端IP地址;PORT:ORACLE服务端端口号,默认为1521;SERVICE_NAME:数据库名称。
二、建立oracle.pc文件,文件内容为:
// oracle.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <errno.h>
//EXEC SQL INCLUDE SQLCA;
#include <sqlca.h>
int main(int argc, char* argv[])
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR myusername[20], mypassword[20], myserver[20];
EXEC SQL END DECLARE SECTION;
printf( "\\n请输入用户名:" );
gets( (char*)myusername.arr );
myusername.len = (unsigned short) strlen( (char*)myusername.arr );
printf( "\\n请输入口令:" );
gets( (char*)mypassword.arr );
mypassword.len = (unsigned short) strlen( (char*)mypassword.arr );
printf("\\n请输入服务器名:");
gets( (char*)myserver.arr );
myserver.len = (unsigned short) strlen( (char*)myserver.arr );
EXEC SQL CONNECT :myusername IDENTIFIED BY :mypassword USING :myserver;
if(sqlca.sqlcode < 0 )
printf (" \\n用户%s成功地连接到了服务器%s上!\\n" , myusername.arr, myserver.arr);
else
printf("\\n%ld,%s\\n", sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
return 0;
}
三、找到ORACLE安装目录下PROC.exe文件,本机目录为:D:\\oracle\\product\\10.2.0\\client_2\\BIN,将oracle.pc文件拷贝到些目录下,运行cmd命令行,cd到此目录下,运行proc.exe oracle.pc oracle.cpp命令,会在当前目录下生成oracle.cpp文件。
四、启动VS2010,建立空控件台的oracle项目,以下要注意了,做好VS项目配置。将oracle.cpp的拷贝至oracle目录下,添加进工程。然后做下图的配置:
1、数据库include头文件路径配置
2、数据库LIB文件目录配置
3、数据库依赖LIB文件配置
五、删除之前自动生成的oracle.cpp文件,将oracle.cpp添加进oracle项目,编译链接。可能会出现以下几个错误:
1、提示未include "stdafx.h"。解决方案:在oracle.cpp开始部位添加#include "stdafx.h"
2、提示 error LNK2001: unresolved external symbol "void __cdecl sqlcxt(void * *,unsigned int *,struct sqlexd *,struct sqlcxp const *)" (?sqlcxt@@YAXPAPAXPAIPAUsqlexd@@PBUsqlcxp@@@Z)错误。解决方案:extern
3、其它一些问题,就仔细查看配置的include、lib路径是否正确,以及lib文件名是否正确。
六、运行生成的oracle.exe。截图如下:
以上是关于[转]PROC简单使用用例--VC连接ORACLE的主要内容,如果未能解决你的问题,请参考以下文章