• VC下使用Proc连接Oracle数据库


    1、设置目录:
        打开“tools->Options”,转到“Directories”页,在"Show Directories for"中
           1) 选“Executable Files”,在列表中加入proc.exe的目录(ORACLE_HOME\bin),如:D:\Oracle\product\10.1.0\Client_1\BIN

           2) 选“Include Files”,在列表中加入proc包含头文件的目录(ORACLE_HOME\PRECOMP\PUBLIC),如:D:\Oracle\product\10.1.0\Client_1\precomp\public

           3) 选“Library Files”,在列表中加入proc Lib所在的目录(ORACLE_HOME\PRECOMP\LIB\MSVC),如:D:\Oracle\product\10.1.0\Client_1\precomp\LIB\msvc

    2、建立一MFC工程

    3、往工程中加入,Proc的源和头文件,例加:proc.pc、proc.h

    4、右击 .pc 文件(如proc.pc),选择"settings...",进入到"project settings",然后选择Custom Build页:
        a) 在Commands下写入命令:proc  输入入文件名 oname=输出文件名(如:proc proc.pc oname=proc.cpp) ;

        b) 在Outputs下写入输出文件名(如proc.c)。

    5、编译工程,它将会自动预编译产生c/c++文件(如proc.cpp)

    6、修改上一步产生的文件
        a) 把#include "stdafx.h"提到最前面(根据情况决定是否需要添加#include "stdafx.h");
        b) 把extern void sqlcxt (void **, unsigned long *,struct sqlexd *, const struct sqlcxp *);之类的函数的定义用下面的括起


             #ifdef  __cplusplus
             extern "C" {
             #endif

               extern void sqlcxt (void **, unsigned long *,struct sqlexd *, const struct sqlcxp *);

               ... ...


             #ifdef  __cplusplus
             }
             #endif

    6、把lib文件加入工程中:

        project->settings->link-> object/library modules 中加入orasql10.lib(10g版本)


    7、编译链接产生可执行文件

    注:重编译整个工程时,别忘了第6步修改产生的文件。

    附例程:

    //------------------------------------------- pctest.pc ------------------------------------------------

    #include <stdio.h>
    #include <string.h>

    EXEC SQL INCLUDE SQLCA;

    int main()

    {

    EXEC SQL BEGIN DECLARE SECTION;

    char user[20],pass[20],tnsname[20];

    char enam[20];

    int empn;

    float sa;

    EXEC SQL END DECLARE SECTION;

    strcpy(user,"scott");

    strcpy(pass,"tiger");

    strcpy(tnsname,"oracle");

    EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;

    printf("connecting succesfull...\n");


    EXEC SQL DECLARE emp_cur CURSOR FOR

    SELECT empno,ename,sal FROM emp;

    EXEC SQL OPEN emp_cur;

    printf("cursor openning...\n");

    while(1)
    {
     EXEC SQL WHENEVER NOT FOUND DO break;
     EXEC SQL FETCH emp_cur INTO :empn,enam,sa;
     printf("%d,%s,%f\n",empn,enam,sa);
    }


    EXEC SQL CLOSE emp_cur;

    EXEC SQL COMMIT WORK RELEASE;

    return 0;

    }

    //---------------------------------- 编译 pctest.pc 后生成的pctest.c ---------------------------------------

    略。

    //-------------------------------------- 完 ------------------------------------------------

  • 相关阅读:
    hexo 建站参考
    如何在element-UI 组件的change事件中传递自定义参数
    vue 项目中当访问路由不存在的时候默认访问404页面
    百度地图引用时 报出A Parser-blocking, cross site (i.e. different eTLD+1) script
    echarts之legend-改变图例的图标为自定义图片
    大数据浪潮下的前端工程师
    为什么要使用TypeScript开发Web应用程序
    【转】简单理解Vue中的nextTick
    vue项目如何刷新当前页面
    安装Genymotion android模拟器
  • 原文地址:https://www.cnblogs.com/meronzhang/p/2881820.html
Copyright © 2020-2023  润新知