操作系统:windows 7

数据库版本号:oracle 10g

VS版本号:VS2010

前言:连接ORACLE有许多方法,这里只PROC外壳,说明如何连接oracle,有事吗,希望你告诉我指出,一起学习。

一、安装oracle 10g相应的client版本号。

  注意事项:做好客户配置,以本机为例: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服务端port号,默觉得1521;SERVICE_NAME:数据库名称。

二、建立oracle.pc文件,文件内容为:

// oracle.cpp : Defines the entry point for the console application.

//

#include

#include

#include

#include

//EXEC SQL INCLUDE SQLCA;

#include

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文件夹下,加入进project。然后做下图的配置:

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 

void sqlcxt (void **, unsigned int *。struct sqlexd *, const struct sqlcxp *);在extern后加上"C"编译就可以

3、其他一些问题。就细致查看配置的include、lib路径是否正确。以及lib文件名称是否正确。

六、执行生成的oracle.exe。截图例如以下:



精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。