重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
連接代碼如下:
創新互聯公司2013年開創至今,是專業互聯網技術服務公司,擁有項目成都網站建設、成都網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元九臺做網站,已為上家服務,為九臺各地企業和個人服務,聯系電話:18982081108
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
char oc_passwd[101]; /*數據庫密碼*/
char oc_userid[101]; /*數據庫用戶名*/
char oc_dbname[101]; /*數據庫名*/
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));
/*取數據庫用戶名*/
strcpy(oc_userid, "userid");
/*取數據庫用戶密碼*/
strcpy(oc_passwd, "passwd") ;
/*取數據庫名*/
strcpy(oc_dbname, "dbname");
EXEC SQL CONNECT :oc_userid
IDENTIFIED BY :oc_passwd
USING :oc_dbname;
if (sqlca.sqlcode != 0)
{
printf("用戶名[%s]密碼[%s]數據庫[%s]\n", oc_userid, oc_passwd, oc_dbname);
printf("連接數據庫失敗,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;
}
有三種辦法:
1、用ODBC,安裝ODBC驅動,使用微軟提供的ODBC的API訪問數據庫;
2、用ORACLE提供的OCI API調用方式;
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數據庫通過使用oracle提供的OCI接口和PROC編程接口兩種方式。
OCI方式純粹是一些函數接口。
PROC是oracle提供的一種C與ORACLE SQL的混合編程。程序(以.pc為后綴)編好之后,使用oracle提供的proc預編譯程序,將pc文件編譯成c文件(這一過程,相當于將SQL轉換為OCI的接口),然后再使用c語言編譯器生成可以執行文件。
OCI方式不容易入門,它擁有大量的接口函數,要很快熟悉它,非常難。但OCI方式的編程效率很高。
porc方式簡單易用。可用于對性能要求不太高的項目。