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