Pro*C/C++ windows編程
來源:phoenix.yuwen 2005-11-21
[1]先建立一個winproc.pc檔案
在裡面把和oracle資料庫相關的操作寫成類和函數
先行編譯時注意:
先行編譯設定項中要修改 CODE,PARSE,CPP_SUFFIX
1:CODE選CPP
2:PARSE選none或partial
3:CPP_SUFFIX選cpp
[2]先行編譯成功後產生winproc.cpp檔案
將該檔案改成標頭檔winproc.h匯入你的工程當中
在工程開發程式中引用winproc.h中的類和函數進行對資料庫的操作
下面是我寫的一個winproc.pc檔案
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sqlca.h>
#include <afxwin.h>
#include <oraca.h>
EXEC ORACLE OPTION (RELEASE_CURSOR=YES);
EXEC SQL INCLUDE sqlca;
/*sql變數聲明*/
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;
class oracle_proc
{
public:
void connect_oracle();
void select_sql();
void sql_error();
};
void oracle_proc::connect_oracle()
{
/*以user:system/manager 登入資料庫*/
EXEC SQL CONNECT :"scott" IDENTIFIED BY :"scott";
/*登入不成功時*/
if(sqlca.sqlcode<0)
{
AfxMessageBox(sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE;
}
/*串連成功時*/
else
{
AfxMessageBox("/nConnected to Oracle!/n");
}
};
void oracle_proc::sql_error()
{
AfxMessageBox("some error …");
};
void oracle_proc::select_sql()
{
/*sql語句賦值為insert語句*/
EXEC SQL BEGIN DECLARE SECTION;
char temp[20];
EXEC SQL END DECLARE SECTION;
/*執行sql*/
EXEC SQL SELECT DNAME INTO :temp FROM SCOTT.DEPT WHERE DEPTNO = '28';
EXEC SQL COMMIT WORK RELEASE;
/*輸出sql語句*/
AfxMessageBox(temp);
};
先行編譯後產生winproc.cpp
再建立一個MFC程式,把標頭檔winproc.h匯入到工程裡,要記得添加庫檔案oraSQL8.lib
在裡面做個實驗看看:
void CTestProcDlg::OnButton1()
{
// TODO: Add your control notification handler code here
oracle_proc ora;
ora.connect_oracle();
ora.select_sql();
//ora.sql_error();
}
結果看到通過MFC+Pro*C/C++我們做到了直接存取oracle資料庫,而且整個過程很簡單,
Oo^____^oO
有問題一起討論
Email:yuwen05@126.com