免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3411 | 回复: 6
打印 上一主题 下一主题

[C] 问一个用C/C++ 连接oracle 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-13 13:58 |只看该作者 |倒序浏览
想做一个小工具 达到这种目的
用C/C++ 写一个程序连接oracle
然后创建一张表
不断往里面塞数据 每行数据字段的值随机

求教各位大哥该如何实现 ...  
PS:不是没想过存储过程 是因为 存储过程本身也会有日志 我想要的是 纯 Insert 或者update 以及create 的归档

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
2 [报告]
发表于 2011-07-13 14:04 |只看该作者
想做一个小工具 达到这种目的
用C/C++ 写一个程序连接oracle
然后创建一张表
不断往里面塞数据 每行数据 ...
chiyiangel 发表于 2011-07-13 13:58



    用C创建数据,在文件里。用sqlldr往里塞。

论坛徽章:
0
3 [报告]
发表于 2011-07-13 14:15 |只看该作者
回复 2# yulihua49


    最好是能用C 连接到oracle 里面去 如果用文件的话 就是一个事务了...

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
4 [报告]
发表于 2011-07-13 14:51 |只看该作者
本帖最后由 yulihua49 于 2011-07-13 14:55 编辑
回复  yulihua49


    最好是能用C 连接到oracle 里面去 如果用文件的话 就是一个事务了...
chiyiangel 发表于 2011-07-13 14:15



    那可以用PRO*C,或OCI。
使用固定的表可以PRO*C,任意表,OCI比较方便。
OCI的使用相当的繁琐。使用SDBC包装器,用起来就比较简单了。
SDBC是高性能交易中间件,专用于处理C/S/S模式的OLTP。

论坛徽章:
0
5 [报告]
发表于 2011-07-13 15:17 |只看该作者
回复 4# yulihua49


    恩就是固定的一张表... 然后往里面 查数据... 能具体说下proC 怎么用或者给个文档么

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2011-07-14 00:39 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2011-07-23 23:47 |只看该作者
本帖最后由 广西邮储银行 于 2011-07-23 23:57 编辑

这是一个insert的范例
[hwt@localhost xt8]$ cat xt8.pc
#include <stdio.h>
EXEC SQL INCLUDE sqlca;

void sqlerror();
int main(void)
{
EXEC SQL BEGIN DECLARE SECTION;
char username[10];
char password[10];
char sid[10];
//char *uid="scott/scott@testdb";  
int deptno=10;
char dname[20];
char loc[20];

EXEC SQL END DECLARE SECTION;

strcpy(username,"scott");
strcpy(password,"scott");
strcpy(sid,"testdb");
strcpy(dname,"fred");
strcpy(loc,"nann");


EXEC SQL WHENEVER SQLERROR DO sqlerror();//下面语句有报错就进入错误处理函数

EXEC SQL CONNECT :username
        IDENTIFIED BY :password
        USING :sid;
//EXEC SQL CONNECT :uid;

EXEC SQL INSERT INTO dept VALUES(:deptno,:dname,:loc);
EXEC SQL COMMIT WORK RELEASE;
        exit(0);
}
void sqlerror() //自定义的错误处理函数
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
fprintf(stderr,"%d\n%-70s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
/*sqlca.sqlcode错误码*/
/*sqlca.sqlerrm.sqlerrmc错误信息*/
EXEC SQL ROLLBACK WORK RELEASE;
exit(1);
}
[hwt@localhost xt8]$ proc iname=xt8.pc oname=xt8.c                              
Pro*C/C++: Release 10.2.0.1.0 - Production on 星期二 4月 19 23:05:28 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

系统默认选项值取自于:  /opt/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
[hwt@localhost xt8]$ cc -I${ORACLE_HOME}/precomp/public xt8.c -o xt8 -L${ORACLE_HOME}/lib -lclntsh
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP