日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows下C语言连接Oracle数据库

發(fā)布時間:2023/12/19 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows下C语言连接Oracle数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

最近公司有個項目需要用到Oracle數(shù)據(jù)庫,我負責前期的調(diào)研。由于項目要用到C和PHP兩種語言,所以先收集這兩種語言連接Oracle的方法。PHP使用的是Laravel框架,直接使用了Laravel-OCI8進行數(shù)據(jù)庫連接,毫無壓力的連接成功了。C使用的是Ocilib進行數(shù)據(jù)庫連接,在這里踩了幾個坑,卡了幾天,今天有空整理下,防止下次繼續(xù)掉坑。

提示:本文使用的是win7 64位去連接遠程的 Oracle 11g數(shù)據(jù)庫

OCILIB介紹

OCILIB是一個跨平臺的Oracle驅(qū)動程序,可提供非??焖俸涂煽康卦L問Oracle數(shù)據(jù)庫。它提供了一個豐富,功能齊全,并易于使用的API 。OCILIB 支持運行的所有Oracle平臺。

OCI環(huán)境搭建

由于OCILIB是對OCI進行二次封裝,所以在使用OCILIB前,需要安裝OCI環(huán)境,我們只要安裝好Instant Client就能完成OCI環(huán)境的搭建。

Instant Client下載

首先我們從官方下載自己系統(tǒng)所對應(yīng)的Instant Client,由于我的系統(tǒng)是win7 64位的,所以選擇了 Instant Client for Microsoft Windows (x64)下的 instantclient-basic-windows.x64-12.1.0.2.0.zip

提示:頁面下需要點擊 Accept License Agreement 后才能開始下載。

Instant Client安裝

我們將下載的文件解壓到電腦任意位置(本文將以解壓到 D:\instantclient_12_1 為例),然后添加以下環(huán)境變量:

  • path => D:\instantclient_12_1
  • TNS_ADMIN => D:\instantclient_12_1
  • NLS_LANG => SIMPLIFIED CHINESE_CHINA.ZHS16GBK

提示:path如果已經(jīng)存在值的話,直接在尾部追加。

下載OCILIB

直接從Github上下載最新版即可,下載完成后將文件解壓到任意位置(本文將以解壓到 **C:\ocilib **為例)。

VS2010配置

  • 點擊 項目 - 屬性 - 配置管理器,新建一個X64平臺(因為我下載的Instant Client是64位的,所以要用x64平臺)
  • 點擊 項目 - 屬性 - 配置屬性 - VC++ 目錄,在 包含目錄 添加 C:\ocilib\include
  • 點擊 項目 - 屬性 - 配置屬性 - 鏈接器 - 常規(guī),在 附加庫目錄 添加 C:\ocilib\lib64
  • 示例代碼

    #include "stdafx.h" #include "ocilib.h"#if defined(OCI_CHARSET_WIDE) #pragma comment(lib, "ocilibw.lib") #elif defined(OCI_CHARSET_ANSI) #pragma comment(lib, "ociliba.lib") #endifvoid err_handler(OCI_Error *err) {printf("code : ORA-%05i\n""msg : %s\n""sql : %s\n",OCI_ErrorGetOCICode(err), OCI_ErrorGetString(err),OCI_GetSql(OCI_ErrorGetStatement(err))); }int main(int argc, _TCHAR* argv[]) {OCI_Connection* cn;OCI_Statement* st;OCI_Resultset* rs;OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT);cn = OCI_ConnectionCreate("192.168.1.152:1521/TEST", "system", "123456", OCI_SESSION_DEFAULT);if(cn == NULL){err_handler(OCI_GetLastError());printf("%i",OCI_GetVersionServer(cn));printf("連接失敗!\n");}st = OCI_StatementCreate(cn);OCI_ExecuteStmt(st, "select id,age from web_user");rs = OCI_GetResultset(st);while (OCI_FetchNext(rs)){printf("code: %i, name %s\n", OCI_GetInt(rs, 1) , OCI_GetString(rs, 2));}printf("\n%d row(s) fetched\n", OCI_GetRowCount(rs));OCI_Cleanup();char a[20];gets(a);return EXIT_SUCCESS; }

    提示:程序運行時如果提示 計算機中丟失 ocilib*.dll,這里由于程序找不到ocilib*.dll造成的,只要將 C:\ocilib\lib64 加入path或者將 C:\ocilib\lib64 下的 ocilib*.dll 復(fù)制到程序目錄就可以解決了。

    轉(zhuǎn)載于:https://my.oschina.net/jathon/blog/756205

    總結(jié)

    以上是生活随笔為你收集整理的Windows下C语言连接Oracle数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。