zoukankan      html  css  js  c++  java
  • [转]PROC简单使用用例--VC连接ORACLE

    [转]PROC简单使用用例--VC连接ORACLE

    操作系统:windows 7

    数据库版本:oracle 10g

    VS版本:VS2010

    前言:连接ORACLE的方式有很多,此处仅以PROC为例,说明如何连接oracle,有不妥之处,望诸位看官指出,学习共进。

    一、安装oracle 10g对应的客户端版本。

      注意事项:做好客户配置,以本机为例:D:oracleproduct10.2.0client_2NETWORKADMIN nsnames.ora文件为

    # tnsnames.ora Network Configuration File: d:oracleproduct10.2.0client_2 etworkadmin nsnames.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文件,文件内容为:

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. // oracle.cpp : Defines the entry point for the console application.  
    2. //  
    3.   
    4. #include <stdio.h>  
    5. #include <stdlib.h>  
    6.   
    7. #include <process.h>   
    8. #include <errno.h>   
    9.   
    10. //EXEC SQL INCLUDE SQLCA;  
    11. #include <sqlca.h>  
    12.   
    13. int main(int argc, char* argv[])  
    14. {  
    15.     EXEC SQL BEGIN DECLARE SECTION;  
    16.     VARCHAR myusername[20], mypassword[20], myserver[20];  
    17.     EXEC SQL END DECLARE SECTION;  
    18.   
    19.     printf( " 请输入用户名:" );  
    20.     gets( (char*)myusername.arr );  
    21.     myusername.len = (unsigned short) strlen( (char*)myusername.arr );  
    22.     printf( " 请输入口令:" );  
    23.     gets( (char*)mypassword.arr );  
    24.     mypassword.len = (unsigned short) strlen( (char*)mypassword.arr );  
    25.     printf(" 请输入服务器名:");  
    26.     gets( (char*)myserver.arr );  
    27.     myserver.len = (unsigned short) strlen( (char*)myserver.arr );  
    28.     EXEC SQL CONNECT :myusername IDENTIFIED BY :mypassword USING :myserver;  
    29.       
    30.     if(sqlca.sqlcode < 0 )  
    31.         printf ("  用户%s成功地连接到了服务器%s上! " , myusername.arr, myserver.arr);   
    32.     else  
    33.         printf(" %ld,%s ", sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);  
    34.     return 0;  
    35. }  

    三、找到ORACLE安装目录下PROC.exe文件,本机目录为:D:oracleproduct10.2.0client_2BIN,将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 void sqlcxt (void **, unsigned int *,struct sqlexd *, const struct sqlcxp *);在extern后加上"C"编译即可

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

    六、运行生成的oracle.exe。截图如下:

    原文地址:http://blog.csdn.net/heihei36/article/details/40149243

  • 相关阅读:
    input宽度自适应
    七牛云上传 图片
    删除文件夹所有内容
    无法获取 div123 的内部内容,因为该内容不是文本。
    关于"无法删除数据库 'xxx',因为该数据库当前正在使用" 解决办法
    Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
    asp.net复制整个文件夹
    多行文本框内容转换空格换行
    花(唯一分解定理+排列组合+快速幂)
    Xn数列(矩阵乘法+快速幂+慢速乘法)
  • 原文地址:https://www.cnblogs.com/schowen/p/5815661.html
Copyright © 2011-2022 走看看