gcc oracle mysql_Linux下C語言訪問Oracle數據庫Demo

前提條件

1. Linux環境已經存在,安裝好了Oracle

本demo 運行環境

本地環境???? RedHat LINUX AS 4 ,ORACLE 10G

本地數據庫sid orcl,ip:127.0.0.1,用戶名:kingbi,密碼:kingbi,表dsd_test. 顯示表dsd_test 的所有記錄.

步驟:

(1) 創建表 create table dsd_test(aa char(3)); insert into dsd_test? values('123');insert into dsd_test? values('456');

被配置本地命名服務($ORACLE_HOME/network/admin/tnsnames.ora

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

(2) 修改配置文件 /etc/profile (用root用戶修改,增加 2句代碼

...

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

export ORACLE_HOME=........????????????????????????????????????????????????????????? #以下2行為新加

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib????????? #這句很關鍵

.....

(3) 更改$ORACLE_HOME/precomp/admin/pcscfg.cfg (include= 開頭的語句為新加的,,/usr/lib/gcc/i386-redhat-linux/3.4.3/include 也是新加的) www.linuxidc.com

sys_include=(/ade/aime_rdbms_9819/oracle/precomp/public,/usr/include,/usr/lib/gcc-lib/i486-SUSE-linux/2.95.3/include,/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include,/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include,/usr/lib/gcc/i386-redhat-linux/3.4.3/include)

include=$ORACLE_HOME/lib

include=$ORACLE_HOME/precomp/precomp/include

include=$ORACLE_HOME/precomp/oracore/include

include=$ORACLE_HOME/precomp/oracore/public

include=$ORACLE_HOME/precomp/rdbms/include

include=$ORACLE_HOME/precomp/rdbms/public

include=$ORACLE_HOME/precomp/rdbms/demo

include=$ORACLE_HOME/precomp/nlsrtl/include

include=$ORACLE_HOME/precomp/nlsrtl/public

include=$ORACLE_HOME/precomp/network_src/include

include=$ORACLE_HOME/precomp/network_src/public

include=$ORACLE_HOME/precomp/network/include

include=$ORACLE_HOME/precomp/network/public

include=$ORACLE_HOME/precomp/plsql/public

ltype=short

(4) 編寫c 程序 test.pc文件 www.linuxidc.com

#include

EXEC SQL INCLUDE SQLCA;

int main()

{

//聲明SQL變量

EXEC SQL BEGIN DECLARE SECTION;

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

//VARCHAR預編譯后為struct { unsigned short len; unsigned char arr[20];}

char ename[20];

EXEC SQL END DECLARE SECTION;

//聲明結束

int i=0;

strcpy(user.arr,"kingbi");

user.len=(unsigned short)strlen((char *)user.arr);

strcpy(pass.arr,"kingbi");

pass.len=(unsigned short)strlen((char *)pass.arr);

strcpy(tnsname.arr,"orcl");

tnsname.len=(unsigned short)strlen((char *)tnsname.arr);

//連接數據庫

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

//執行查詢

EXEC SQL declare emp_cursor cursor for

select aa from kingbi.test;

EXEC SQL open emp_cursor;

EXEC SQL WHENEVER NOT FOUND DO break;

while(1)

{

EXEC SQL fetch emp_cursor into :empno,:ename;

printf("the name is %s\n",ename);

i=i+1;

}

printf("Yeah!We get %d records\n",i);

EXEC SQL close emp_cursor;

EXEC SQL commit work release;

}

(5) 預編譯 ,編譯后會生成 .c文件

proc test.pc

(6)編譯

gcc -o test test.c $ORACLE_HOME/lib/libclntsh.so

(6) 運行生成的可執行文件

./test

輸出:

the name is 123

the name is 456

Yeah!We get 2 records0b1331709591d260c1c78e86d0c51c18.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277550.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

煉數成金數據分析課程---16、機器學習中的分類算法(交叉內容,后面要重點看)...

煉數成金數據分析課程---16、機器學習中的分類算法(交叉內容,后面要重點看) 一、總結 一句話總結: 大綱實例快速學習法 主要講解常用分類算法(如Knn、決策樹、貝葉斯分類器等)的原理及python代碼實現 1、什么是分類? 分…

NFS配置詳解

1、NFS服務介紹1.1 什么是NFS?NFS是Network File System的縮寫。中文意思是網絡文件系統。它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或者目錄。NFS客戶端(一般為應用服務器,例如web&…

idea用法

更新gradle的依賴后,刷新項目引入jar包的方法: view--Tool Buttons 在右側 Gradle 點刷新 轉載于:https://www.cnblogs.com/z360519549/p/10994897.html

linux備份mysql需要暫停服務嗎_【MySQL運維】線上MySQL數據庫停服遷移流程

一、數據備份與恢復階段,選在凌晨1點進行操作,暫停服務進行備份(允許停服2個小時)1、首先停止Nginx服務,并且修改數據庫用戶密碼,防止還有新的連接進來2、殺掉某個用戶所有進程for i in mysql -udba -pPASSWORD -ssse "show …

免費下載!5本阿里技術好書,帶你看更大的世界

共享、開源是互聯網技術發展的重要精神。在過去,25000多萬名阿里工程師,撰寫了一系列精品技術叢書,從算法、研發到職業人生隨筆,應有盡有。目前該系列叢書已全部開放下載,供技術人免費閱讀。 今天小編整理了其中的五本…

python3安裝mysqlclient_Python3 安裝mysqlclient錯誤處理(MAC版)

在使用django的時候需要安裝mysqlclient庫,很多時候會出現以下報錯:running installrunning bdist_eggrunning egg_infowriting mysqlclient.egg-info/PKG-INFOwriting dependency_links to mysqlclient.egg-info/dependency_links.txtwriting top-level names to mysqlclient.…

React綁定事件處理函數this的幾種方法

在以類繼承的方式定義的組件中,為了能方便地調用當前組件的其他成員方法或屬性(如:this.state),通常需要將事件處理函數運行時的 this 指向當前組件實例。 綁定事件處理函數this的幾種方法: 第一種方法&…

烏班圖系統16.04安裝

本例jiyu基于Ubuntu16.04 64位版本為例進行安裝,安裝的方式有多種,本文使用光盤進行安裝安裝前應準備好,將Ubuntu的鏡像文件刻成光盤,然后將光盤放入光驅,并設置服務器從光盤啟動,開機到如下界面:按Enter鍵到下一步,如…

python做游戲用什么軟件_用Python自制谷歌小游戲

谷歌流量器中有個很有名的彩蛋:當你網絡出現問題時,就會出現一個“小恐龍游戲”。(如果想要直接進行游戲,可以在地址欄輸入:chrome://dino)今天我們就來給大家演示下,用Python來自己做一個仿制的“小恐龍游戲”&#x…

使用maven構建項目候,jar包錯誤的解決辦法

1、刪除架包,重新下載,右鍵項目點擊"run as"中的“maven clean”,然后再maven中找到Update Project 2、可以在代碼中,把鼠標放到報錯的架包上 點擊劃紅線部分,進行安裝 轉載于:https://www.cnblogs.com/qingqian/p/1099…

MySQL——通過EXPLAIN分析SQL的執行計劃

在MySQL中,我們可以通過EXPLAIN命令獲取MySQL如何執行SELECT語句的信息,包括在SELECT語句執行過程中表如何連接和連接的順序。下面分別對EXPLAIN命令結果的每一列進行說明:select_type:表示SELECT的類型,常見的取值有:…

python將argv作為參數_在jupyter / ipython notebook中將命令行參數傳遞給argv

經過大量的環顧后,我發現了非常繁瑣的自定義庫,但是用幾行代碼解決了它,我認為這些代碼很漂亮.我使用nbconvert最終得到一個html報告作為輸出,包含筆記本中的所有圖形和降價,但是通過最小的python包裝器接受命令行參數:python文件test_args.py(正常執行命令行參數)&…

模擬輸入(ADC-A0)

ESP8266具有內置的10位ADC,只有一個ADC通道(A0引腳),即只有一個ADC輸入引腳可讀取來自外部器件的模擬電壓 ESP8266上的ADC通道和芯片供電電壓復用,也就是說我們可以將其設置為測量系統電壓或者外部電壓 測量外部電壓: analogRead(…

SQL Server 連接超時案例一則

原文:SQL Server 連接超時案例一則上周六,一工廠系統管理員反饋一數據庫連接不上,SSMS連接數據庫報“連接超時時間已到。在嘗試使用預登錄握手確認時超過了此超時時間.......”, 如下截圖所示: 另外遠程連接也連接不上,系統管理員…

mysql 刪除5天前 備份_mysql自動備份刪除5天前的備份

1、查看磁盤空間情況:df -h2、創建備份目錄:上面我們使用命令看出/home下空間比較充足,所以可以考慮在/home保存備份文件;cd /homemkdir backupcd backup3、創建備份Shell腳本:注意把以下命令中的DatabaseName換為實際的數據庫名稱…

個人作業-Alpha項目測試

這個作業屬于哪個課程https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2作業地址https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3340團隊名稱腦闊疼https://www.cnblogs.com/chaserFF/p/10994338.html這個作業的目標完成班級項目互評…

深入理解brew link命令

來源:https://newsn.net/say/brew-link-php71.html brew是mac機上面程序猿非常常用的軟件包安裝方式,其中有兩組命令是需要大家知曉的。分別是:第一組:brew install和brew uninstall。第二組,brew link和brew unlink。…

scss2css vscode設置_VSCode下讓CSS文件完美支持SCSS或SASS語法方法

VSCode下讓CSS文件完美支持SCSS或SASS語法方法習慣Webpack PostCSS后, 通常PostCSS都是直接對CSS文件進行處理, 但是大部分習慣SCSS/SASS/LESS的朋友也許不適應了. 我專門研究了一下, 在Visual Studio Code編輯器下如果配置相關代碼和設置達到CSS文件完美編寫SCSS的辦法, 其他…

第5章 初識JQuery

JQuery是對JavaScript的封裝,簡化了JS代碼,是主流框架的基礎(VUE,EasyUI,Bootstrap) 它是2006年推出的JQuery的優勢: 體積小,壓縮后只有100KB左右 強大的選擇器 出色的DOM封裝 可靠的事件處理機制 出色的瀏覽器兼容性 使用隱式迭代…

Jenkins的Pipeline腳本在美團餐飲SaaS中的實踐

2019獨角獸企業重金招聘Python工程師標準>>> 一、背景 在日常開發中,我們經常會有發布需求,而且還會遇到各種環境,比如:線上環境(Online),模擬環境(Staging)&…