上一篇中记录了连接数据库,这一次将会记录通过C程序操作数据的例子~~
#include
#include
void sqlerror()
{
printf("ORACLE error:%.70s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL WHENEVER SQLERROR continue;
EXEC SQL rollback RELEASE;
}
int login()
{
char uid[]="test/test@192.168.30.50:1521/rsdb";
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL CONNECT :uid;
if (sqlca.sqlcode == 0)
printf("Connect successful!\n");
return sqlca.sqlcode;
}
int insert()
{
int id=104;
char name[]="c";
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL INSERT INTO TEST(ID,NAME) values(:id,:name);
if (sqlca.sqlcode == 0)
{
printf("Insert successful!\n");
}
return sqlca.sqlcode;
}
int del()
{
int id = 11;
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL DELETE FROM TEST WHERE ID=:id;
if (sqlca.sqlcode == 0)
{
printf("Del successful!\n");
}
return sqlca.sqlcode;
}
int select()
{
int id;
char name[2]={0x00};
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL SELECT ID,NAME INTO :id,:name FROM TEST WHERE ID = 100;
if (sqlca.sqlcode == 0)
{
printf("Select successful!\n");
printf("ID=%d Name=%s\n",id,name);
}
return sqlca.sqlcode;
}
int main()
{
if(login() != 0)
{
printf("Connect error!\n");
return -1;
}
insert();
del();
select();
EXEC SQL COMMIT RELEASE;
return 0;
}
---void sqlerror() 打印错误信息
----int login() 登陆数据库
---int insert() 插入数据到数据库
---int del()从数据库删除数据
---int select()查询特点数据
在每个函数中的都有一句,将我们的oracle执行错误的时候去DO sqlerror();
EXEC SQL WHENEVER SQLERROR DO sqlerror();
这是proc中whenever的用法,还有另外两种:
EXEC SQL WHENEVER NOT FOUND DO sqlerror();
EXEC SQL WHENEVER SQLWARNING DO sqlerror();
SQLERROR----错误标示
NOT FOUND----没有数据标示
SQLWARNING---警告信息标示
在select函数中在SQL语句中加了where限制,这是只取特定的一行数据,如果不加限制select 会取出所有的数据,倒是就要用到游标去错做结果集了