proc在的程序如果我直接写成控制台程序,那么只要用proc 编译成.c 文件,然后用cl my.c orasql8.lib编译即可,
可是如何用在VC下做成有界面的程序呢,上次我问了后,
有位朋友告诉我这样做就可以了:
可是我按它做的,orasql8.lib我已经链接了,但总是有编译不通过,报告的错误如下,请大家帮帮我,不胜感激!
D:\Project\MyProject\SOURCE\testProc\proc.cpp(173) : error C2275: 'sqlca' : illegal use of this type as an expression
d:\progra~1\sqllib\include\sqlca.h(48) : see declaration of 'sqlca'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(210) : error C2143: syntax error : missing ')' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(210) : error C2143: syntax error : missing ';' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(210) : error C2059: syntax error : ')'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(214) : error C2143: syntax error : missing ')' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(214) : error C2143: syntax error : missing ';' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(214) : error C2059: syntax error : ')'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(215) : error C2143: syntax error : missing ';' before '{'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(219) : error C2181: illegal else without matching if
-------------------------------------
下面的程序是那位朋友告诉我的
联结数据库的PRO*C 源程序例子。#include < sqlca.h > //声明SQL通讯区
#include < string.h >
#include < afxwin.h >
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20]; //声明宿主变量
VARCHAR password[20];
VARCHAR dbname[20];
EXEC SQL END DECLARE SECTION;
void db_connect()
{
strcpy((char *)username.arr,"SCOTT");
username.len = strlen((char *)username.arr);
strcpy((char *)password.arr,"TIGER");
password.len = strlen((char *)password.arr);
strcpy((char *)dbname.arr,"SUNDB");
dbname.len = strlen((char *)dbname.arr);
EXEC SQL WHENEVER SQLERROR STOP; //隐式异常处理
EXEC SQL CONNECT :username
IDENTIFIED BY :password USING :dbname;
/*if (sqlca.sqlcode != 0) //显式异常处理
{
AfxMessageBox("\n与Oracle数据库连接失败!");
return;
}*/
}
在VC 中使用PRO*C 时,先用PRO*C 编写所需的操作数据库的子程序,
再运行PRO*C 预编译程序把PRO*C 源程序转成相应的CPP 源程序,
将该程序插入到用户工程文件中并在需要对插入函数进行调用的模块中说明函数,
然后就可以在此模块中调用所需的函数。
可是如何用在VC下做成有界面的程序呢,上次我问了后,
有位朋友告诉我这样做就可以了:
可是我按它做的,orasql8.lib我已经链接了,但总是有编译不通过,报告的错误如下,请大家帮帮我,不胜感激!
D:\Project\MyProject\SOURCE\testProc\proc.cpp(173) : error C2275: 'sqlca' : illegal use of this type as an expression
d:\progra~1\sqllib\include\sqlca.h(48) : see declaration of 'sqlca'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(210) : error C2143: syntax error : missing ')' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(210) : error C2143: syntax error : missing ';' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(210) : error C2059: syntax error : ')'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(214) : error C2143: syntax error : missing ')' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(214) : error C2143: syntax error : missing ';' before '.'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(214) : error C2059: syntax error : ')'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(215) : error C2143: syntax error : missing ';' before '{'
D:\Project\MyProject\SOURCE\testProc\proc.cpp(219) : error C2181: illegal else without matching if
-------------------------------------
下面的程序是那位朋友告诉我的
联结数据库的PRO*C 源程序例子。#include < sqlca.h > //声明SQL通讯区
#include < string.h >
#include < afxwin.h >
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20]; //声明宿主变量
VARCHAR password[20];
VARCHAR dbname[20];
EXEC SQL END DECLARE SECTION;
void db_connect()
{
strcpy((char *)username.arr,"SCOTT");
username.len = strlen((char *)username.arr);
strcpy((char *)password.arr,"TIGER");
password.len = strlen((char *)password.arr);
strcpy((char *)dbname.arr,"SUNDB");
dbname.len = strlen((char *)dbname.arr);
EXEC SQL WHENEVER SQLERROR STOP; //隐式异常处理
EXEC SQL CONNECT :username
IDENTIFIED BY :password USING :dbname;
/*if (sqlca.sqlcode != 0) //显式异常处理
{
AfxMessageBox("\n与Oracle数据库连接失败!");
return;
}*/
}
在VC 中使用PRO*C 时,先用PRO*C 编写所需的操作数据库的子程序,
再运行PRO*C 预编译程序把PRO*C 源程序转成相应的CPP 源程序,
将该程序插入到用户工程文件中并在需要对插入函数进行调用的模块中说明函数,
然后就可以在此模块中调用所需的函数。
解决方案 »
- oracle查询问题,望指教
- 为什么oracle刚连上起始几秒插入速度很快,过一会就慢了
- 删除用户时提示无法删除已连接的用户
- 关于oracle sqlplus 登陆问题
- ORACLE服务不见了?
- oracle9i有没有像sql server企业管理器中的“返回所有行”的功能,即在界面上就可以往表中的字段写入数据不是通过语句INSERT的形式
- ▲▲▲HP服务器win2000server环境下(2G内存,双CPU)安装oracle815建库时出错??▲▲▲
- 请教imp和exp中参数inctype的值?
- 为何在red hat 7.2上装不上 oracle8.1.7
- 怎样创建一个数据库实例?
- 关于Pro*C编译出现的问题,救急!在线等!
- 有谁知道在微机上编译 Pro*c程序的事????????
很可惜帮不上你!!
我想学pro*c但不知从何学起?
另外请问如何配制oracle8.15支持pro*c和vc60又怎样配制?
谢谢!!
安装好了后,写一个简单的以pc为后缀的文件,如my.pc,
在命令行方式下c:>proc my.pc 产生my.c
然后在命令行方式下c:>cl my.c orasql8.lib即可!
如果你要proc 的文档的话,网上很多地方都有 oracle 安装目录下的precomp/demo里面的例子很好!
EXEC SQL INCLUDE SQLCA;