Linux c/c++访问Oracle数据库--操作数据

来源:互联网 发布:淘宝上新提醒我 编辑:程序博客网 时间:2024/06/02 20:54

上一篇中记录了连接数据库,这一次将会记录通过C程序操作数据的例子~~

#include <stdio.h>           #include <sqlca.h>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 会取出所有的数据,倒是就要用到游标去错做结果集了

1 0
原创粉丝点击