在linux(或者Unix下)如何用c语言操作数据库

lao_shan 2004-11-21 08:49:23
是否有这样的库可以用?
...全文
170 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lao_shan 2004-12-06
  • 打赏
  • 举报
回复
有点头绪了。谢谢各位
imperman 2004-11-22
  • 打赏
  • 举报
回复
到oracle或sqlserver的目录下搜索*.c就找到了,很简单的,看着照猫画虎来一个就会了
LGQDUCKY 2004-11-22
  • 打赏
  • 举报
回复


http://chinaunix.net/jh/19/72576.html
http://chinaunix.net/jh/19/80950.html
superlcj 2004-11-22
  • 打赏
  • 举报
回复
装一下 proc*c 工具

下面有一下很简单的例子

//////在vc中编译时加载oraSQL8.lib文件
#pragma comment(lib,"oraSQL8.lib")

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "dos.h"

EXEC SQL INCLUDE SQLCA;

//////////数据库联接
int Ora_conn()
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR usr[20],pass[20],serv[20];
EXEC SQL END DECLARE SECTION;
EXEC SQL WHENEVER SQLERROR GOTO sqlerr;

strcpy(usr.arr,"lcj");
usr.len=(unsigned short)strlen((char*)usr.arr);
strcpy(pass.arr,"lcj");
pass.len=(unsigned short)strlen((char*)pass.arr);
strcpy(serv.arr,"zlodb");
serv.len=(unsigned short)strlen((char*)serv.arr);
EXEC SQL CONNECT :usr IDENTIFIED BY :pass USING :serv;
printf("Connect!\n");
return 1;
sqlerr:
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("%s\n",sqlca.sqlerrm.sqlerrmc);
return 0;
}

/////调用存储过程
/*
call_p(userid)
{
EXEC SQL BEGIN DECLARE SECTION;
char userid_p[10];
EXEC SQL END DECLARE SECTION;
strcpy(userid_p,userid);
EXEC SQL EXECUTE
BEGIN
prtest(:userid_p,'124','1234');
END;
END-EXEC;

}
*/
void main()
{
char pathstring[20];
char filecontent[200];
int total=0;

EXEC SQL BEGIN DECLARE SECTION; /*sql中用到的变量*/
char s_mobile[12],s_mscontent[160],s_sendtype[20],s_destmobile[12],s_rowid[18];
char s_mstime[20];
int conn;
EXEC SQL END DECLARE SECTION;

conn=Ora_conn();

if (conn==1)
{
while(1)
{



EXEC SQL WHENEVER NOT FOUND GOTO notfoundall;
EXEC SQL DECLARE c_ms_temp CURSOR FOR SELECT MOBILE,MSCONTENT,SENDTYPE,DESTMOBILE,MSTIME,ROWID FROM MS_TEMP;
EXEC SQL OPEN c_ms_temp;
while(1)
{
EXEC SQL FETCH c_ms_temp INTO :s_mobile,:s_mscontent,:s_sendtype,:s_destmobile,:s_mstime,:s_rowid;
if( sqlca.sqlcode == 1403)
{
break;
}

//从ms_bf移到ms中
EXEC SQL INSERT INTO MS(MOBILE,MSCONTENT,SENDTYPE,DESTMOBILE,MSTIME) VALUES(:s_mobile,:s_mscontent,:s_sendtype,:s_destmobile,:s_mstime);
//对上行表加入log表中
EXEC SQL INSERT INTO LOG VALUES(logseq,nextval,:s_mobile,:s_destmobile,sysdate,'',s_mscontent,'上行表');

EXEC SQL DELETE FROM MS_TEMP WHERE ROWID=:s_rowid;
EXEC SQL COMMIT;

//total=total+1;
//printf("%s\t\t%s\t%s\t\n",userid,username,birthday);


}
continue;
notfoundall:
if (total==0)
{
printf("\n没有找到用户信息!\n\n\n");
}
else
{
printf("\n共有%d条用户信息!\n\n\n",total);
}
printf("处理完成!!!");
delay(5000);
printf("已经delay 5秒!!!!");

}


}
else{
printf("数据库联接失败!!!!");

}


EXEC SQL COMMIT WORK RELEASE;
}
tyrone98 2004-11-21
  • 打赏
  • 举报
回复
PROC*C oracle下有sample的
一、C语言自我YY1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。2)、C语言是一种计算机程序设计语言。具有高级语言的特点,又具有汇编语言的特点。C语言可作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。3)、应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。4)、C语言是面向过程语言,C语言通过windows/linux平台下编译的,是直接运行在windows/linux平台下的,而XX始终是运行在他的虚拟机之上的;所以理论上C语言能做一些相对于比较底层的工作,像XX就不能编写Windows病毒。5)、如果要利用编程来做一些windows优化工作的话,建议还是利用C语言C语言是目前世界上流行、使用最广泛的高级程序设计语言6、很多编译器,几乎所有操作系统Windows,LinuxUnix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用C++,安卓用XX更为合适,图形界面的用其他语言开发效率更高一些(因为他们封装了很多东西),但同样的原因导致略微接近底层的功能其他语言根本干不了!Windows的API都是按照C语言的格式给的,这也很能说明问题!嵌入式开发更是离不了C语言!纵观电脑发展几十年,C语无所不能呀!

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧