前提是電腦必須安裝oracle客戶端。
網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了蘆山免費建站歡迎大家使用!
配置方法:
1、找到oracle的安裝目錄。如:C:\oracle\product\10.2.0\db_1\network\ADMIN
2、找到tnsnames.ora文件。
3、用文本方式打開,添加以下內(nèi)容:
本地實例名?=
(DESCRIPTION?=
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?遠程數(shù)據(jù)庫IP地址)(PORT?=?遠程服務器端口號))
(CONNECT_DATA?=
(SERVER?=?DEDICATED)
(SERVICE_NAME?=?遠程數(shù)據(jù)庫服務名)
)
)
其中中文部分是需要修改的部分,除第一個“本地實例名”外,其他需要跟遠程數(shù)據(jù)庫管理員咨詢,本地實例名就是方便自己識別數(shù)據(jù)庫的一個名字,可以自定義。
4、然后打開pl/sql就能看到自己創(chuàng)建的鏈接,如圖:
有三種辦法:
1、用ODBC,安裝ODBC驅(qū)動,使用微軟提供的ODBC的API訪問數(shù)據(jù)庫;
2、用ORACLE提供的OCI API調(diào)用方式;
3、用ORACLE提供的PRO C方式。
如果你熟悉SQL,建議用方式3,如果熟悉ODBC,建議用方式1,方式2比較麻煩些。
以下代碼是我用PRO C編寫的,供參考:
int ProcConnect(char * sDatabaseName,char * sUserName, char * sPassword)
{
EXEC SQL CONNECT :sUserName IDENTIFIED BY :sPassword USING :sDatabaseName;
if(DBError("Connect Database failed.")) return FALSE;
else return TRUE;
}
/*===========================================================================*/
void ProcCommit()
{
EXEC SQL COMMIT;
}
/*===========================================================================*/
void ProcCommitRelease()
{
EXEC SQL COMMIT RELEASE;
}
/*===========================================================================*/
void ProcRollback()
{
EXEC SQL ROLLBACK;
}
/*===========================================================================*/
void ProcRollbackRelease()
{
EXEC SQL ROLLBACK RELEASE;
}
/*===========================================================================*/
int DBError(char * sMsg)
{
char sErrMsg[1024];
int nRetCode;
size_t szBuf_len, szMsg_len;
if (sqlca.sqlcode = 0) return FALSE;
szBuf_len = sizeof(sErrMsg);
sqlglm(sErrMsg, szBuf_len, szMsg_len);
sErrMsg[szMsg_len] = 0;
sprintf(sDBErrorBuff,"\r\nSQL DBError point:%s", sMsg);
sprintf(sDBErrorBuff+strlen(sDBErrorBuff),"\r\nsqlcode = %d,%s\r\n", sqlca.sqlcode, rTrim(sErrMsg));
if(OraDBDisconnected)
{
printf("The DBConnection was broken!\r\n");
exit(-1);
}
else nRetCode = TRUE;
printf("%s\r\n",sDBErrorBuff);
return nRetCode;
}
連接代碼如下:
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
char oc_passwd[101]; /*數(shù)據(jù)庫密碼*/
char oc_userid[101]; /*數(shù)據(jù)庫用戶名*/
char oc_dbname[101]; /*數(shù)據(jù)庫名*/
char oc_coad[101];
EXEC SQL END DECLARE SECTION;
memset(oc_passwd, 0x00, sizeof(oc_passwd));
memset(oc_userid, 0x00, sizeof(oc_userid));
memset(oc_dbname, 0x00, sizeof(oc_dbname));
/*取數(shù)據(jù)庫用戶名*/
strcpy(oc_userid, "userid");
/*取數(shù)據(jù)庫用戶密碼*/
strcpy(oc_passwd, "passwd") ;
/*取數(shù)據(jù)庫名*/
strcpy(oc_dbname, "dbname");
EXEC SQL CONNECT :oc_userid
IDENTIFIED BY :oc_passwd
USING :oc_dbname;
if (sqlca.sqlcode != 0)
{
printf("用戶名[%s]密碼[%s]數(shù)據(jù)庫[%s]\n", oc_userid, oc_passwd, oc_dbname);
printf("連接數(shù)據(jù)庫失敗,sqlcode=%d\n", sqlca.sqlcode);
return -1;
}
/*讀table取coad字段*/
memset(oc_coad, 0x00, sizeof(oc_coad));
EXEC SQL SELECT coad
INTO :oc_coad
FROM table
WHERE 1=1;
if (sqlca.sqlcode == NORECORD)
{
printf("查詢無記錄\n");
return -1;
}
else if (sqlca.sqlcode != 0)
{
printf("查詢失敗,sqlcode=%d\n", sqlca.sqlcode);
return -1;
}
return 0;
}
通過代碼來連接。
oracle19c安裝好之后導入scott.sql腳本(可以在oracle的安裝目錄的查找)之后在通過代碼連接scott就可以登陸了。
Oracle19c也就是12.2.0.3,是OracleDatabase12c和18c系列產(chǎn)品的最終版本,因此也是“長期支持”版本(以前稱為“終端版本”)。
連接數(shù)據(jù)庫的方法有很多種。C語言最常用的是ODBC,最好你自己參考下網(wǎng)絡上關于ODBC的資料。也可以使用ADO來連接,這個比較方便,但需要自己導入ADO的庫。
其實不論是什么數(shù)據(jù)庫,只要不是自己純手動去連接,其基本連接方法以及操作方法,都是差不多的。比如ADO,不同的數(shù)據(jù)庫,其連接基本上只是連接字符串的不同,系統(tǒng),包括操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng),在底層都有接口的統(tǒng)一封裝。
一般C語言連接oracle數(shù)據(jù)庫通過使用oracle提供的OCI接口和PROC編程接口兩種方式。
OCI方式純粹是一些函數(shù)接口。
PROC是oracle提供的一種C與ORACLE SQL的混合編程。程序(以.pc為后綴)編好之后,使用oracle提供的proc預編譯程序,將pc文件編譯成c文件(這一過程,相當于將SQL轉(zhuǎn)換為OCI的接口),然后再使用c語言編譯器生成可以執(zhí)行文件。
OCI方式不容易入門,它擁有大量的接口函數(shù),要很快熟悉它,非常難。但OCI方式的編程效率很高。
porc方式簡單易用??捎糜趯π阅芤蟛惶叩捻椖?。
當前標題:oracle如何連接c# oracle如何連接oracle數(shù)據(jù)源
文章地址:http://muchs.cn/article46/hjsehg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、定制網(wǎng)站、網(wǎng)站維護、網(wǎng)站排名、手機網(wǎng)站建設、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)