新聞中心
怎么把C語言和Oracle11g連接在一起
有三種辦法:
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)榮成免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
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;
}
請問我用c語言連接oracle 10g,應該怎么做?
連接數(shù)據(jù)庫的方法有很多種。C語言最常用的是ODBC,最好你自己參考下網(wǎng)絡(luò)上關(guān)于ODBC的資料。也可以使用ADO來連接,這個比較方便,但需要自己導入ADO的庫。
其實不論是什么數(shù)據(jù)庫,只要不是自己純手動去連接,其基本連接方法以及操作方法,都是差不多的。比如ADO,不同的數(shù)據(jù)庫,其連接基本上只是連接字符串的不同,系統(tǒng),包括操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng),在底層都有接口的統(tǒng)一封裝。
oracle10客戶端如何連接19c
第一步,前往oracle官方網(wǎng)站下載oracle19c(這里是windows版本)并且下載好PLSQLdeveloper客戶端以及oracle提供的連接工具instantclient。
2、安裝oracle19c把安裝包存放在指定的目錄下放好,解壓后點擊進去安裝。
3、中間過程中會需要設(shè)置基目錄和數(shù)據(jù)庫文件位置自行指定位置,并且設(shè)置好口令(此口令是sys超級管理員的密碼),點擊下一步。
4、安裝完成后,在命令窗口下執(zhí)行services.msc查看oracle相關(guān)服務(wù)是否正常開啟正常開啟之后,可以進行下一步的安裝PLSQLdeveloper,點擊下一步即可。
5、打開plsqldeveloper,點擊cancel,隨后打開plsqldevelope的主界面,點擊configure,點擊最左邊的preferences。
6、之后找到instantclient的目錄以及instantclient目錄下的oci.dll文件路徑,將其設(shè)置在下面圖片的對應位置上。
6、設(shè)置好關(guān)閉,點擊登錄session菜單下的logon。
2=7、使用管理員登錄賬號為sys,密碼為安裝時設(shè)置的口令,database設(shè)置ORCL,點擊登錄就連接上oracle了。
8、編輯tnsnames.ora,替換和增加。
9、保存后重新啟動監(jiān)聽,lsnrctlstop,lsnrctlstart打開命令行,輸入lsnrctlstop,停止后再輸入lsnrctlstart重新連接oracle。
c程序通過什么連接oracle
一般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方式簡單易用。可用于對性能要求不太高的項目。
c連接oracle數(shù)據(jù)庫的連接語句
連接代碼如下:
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;
}
windows系統(tǒng)下,c如何連接oracle數(shù)據(jù)庫?
首先,這類問題應該問到編程區(qū)去,這是軟件喔
########insert.pc############
#include stdio.h
EXEC SQL INCLUDE SQLCA;
void insert (char password_[6],char id_[20],int balance_)
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR user[20],pass[20],tnsname[20];
char password[6];
char id[20];
int balance;
EXEC SQL END DECLARE SECTION;
strcpy(user.arr,"scott");
user.len=(unsigned short)strlen((char *)user.arr);
strcpy(pass.arr,"tiger");
pass.len=(unsigned short)strlen((char *)pass.arr);
strcpy(tnsname.arr,"demo1");
tnsname.len=(unsigned short)strlen((char *)tnsname.arr);
strcpy(id,id_);
strcpy(password,password_);
balance = balance_;
EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;
EXEC SQL insert into bank_bingo values (:id , :password , :balance);
EXEC SQL COMMIT WORK;
EXEC SQL commit work release;
}
#################main.c####################
#include stdio.h
extern void insert (char password_[6],char id_[20],int balance_);
int main(int argc , char ** argv){
char id [20] = "10001";
char password[6] = "123";
int balance = 10000;
insert(password , id , balance);
return 0;
}
############################################
當前文章:linux系統(tǒng)信息命令,linux查系統(tǒng)信息的命令
路徑分享:http://www.ef60e0e.cn/article/hejocg.html