C小菜鸟请问高手C语言怎么操作数据库?谁能提供代码(有注释的)

tometoo 2007-08-16 05:23:18
有2个问题,小弟先谢谢了

1. 请问C语言怎么操作数据库?谁能提供代码(有注释的),
2. 做这样的操作用TC写还是用VC写好?
...全文
514 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
aozhi 2008-07-23
  • 打赏
  • 举报
回复
柳下惠?男的?
柳下惠,姓展,名禽,采食柳下,谥号惠。
薛定谔之死猫 2008-07-23
  • 打赏
  • 举报
回复
ODBJ或者数据库特有的预编译C,如Oracle的Pro*C,或专门的C接口,如OCI,Mysql也有自己的C编程API,TC已经是古老的玩具,别再弄它了
aozhi 2008-07-23
  • 打赏
  • 举报
回复
哦,是没有预编译啊。
如果你装了oracle,直接用
proc iname=预编译前文件 oname=预编译后文件
进行预编译。
然后把预编译后的文件放在vc里编译即可。
aozhi 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cypf2004 的回复:]
楼主,你编译过1楼的程序吗?我编译时怎么报错呢?
exec sql include sqlca;
这个语句无法编译通过。
[/Quote]

这是嵌入式SQL,意思是引入sql conmunication area。
如果你机器上安装过某些数据库(比如oracle)的时候,就会有一个sqlca.h的头文件。
进行嵌入式SQL编程必须引用它。
但小弟没用过C语言写过嵌入式SQL,所以不太清楚错在哪儿。
ly19850703 2008-07-23
  • 打赏
  • 举报
回复
还是用PROC写吧!不过个人感觉VC好些一点。


[Quote=引用 9 楼 cypf2004 的回复:]
楼主,你编译过1楼的程序吗?我编译时怎么报错呢?
exec sql include sqlca;
这个语句无法编译通过。
[/Quote]
需要用proc编译一下的。
cypf2004 2008-07-23
  • 打赏
  • 举报
回复
楼主,你编译过1楼的程序吗?我编译时怎么报错呢?
exec sql include sqlca;
这个语句无法编译通过。
lala_benben 2008-07-23
  • 打赏
  • 举报
回复
你要访问什么数据库。不同数据库接口不一样啊
wangtao641 2007-10-17
  • 打赏
  • 举报
回复
用ACCESS+VC怎样写呢???
laowang2 2007-10-16
  • 打赏
  • 举报
回复
up
oo_v_oo 2007-10-16
  • 打赏
  • 举报
回复
推荐使用MySQL 5.0(2 楼)
wangtao641 2007-10-16
  • 打赏
  • 举报
回复
wlim1982 大虾,你的代码,在我的VC++中不执行,报错是'EXEC' : missing storage-class or type specifiers
EXEC没有定义:( 这是为什么????应该怎样解决这个问题啊??
借别人的帖子,向您请教,别介意。谢谢先。。。。
wlim1982 2007-08-16
  • 打赏
  • 举报
回复
嵌入SQL

连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "util.h"
#include <sqlca.h>
EXEC SQL INCLUDE SQLCA; (1)
main()
{
EXEC SQL BEGIN DECLARE SECTION; (2)
char firstname[13];
char userid[9];
char passwd[19];
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO sample; (3)
EXEC SQL SELECT FIRSTNME INTO :firstname (4)
FROM employee
WHERE LASTNAME = 'JOHNSON';(4)
printf( "First name = %s\n", firstname );
EXEC SQL CONNECT RESET; (5)
return 0;
}
上面是一个简单的静态嵌入SQL语句的应用程序。它包括了嵌入SQL的主要部分:
(1)中的include SQLCA语句定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。
(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。宿主变量可被SQL语句引用,也可以被C语言语句引用。它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。在SQL语句中,主变量前均有“:”标志以示区别。
(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。这时,应该保证数据库实例已经启动。
(4)是一条选择语句。它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。
(5)最后断开数据库的连接。
从上例看出,每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”。

转自:jixingzhong
xlbdan 2007-08-16
  • 打赏
  • 举报
回复
应该用VC更好一些
Seu_why 2007-08-16
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>


#include "/usr/include/mysql/mysql.h"


#define DB_HOST_NAME "localhost"
#define DB_USER_NAME "you"
#define DB_USER_PWD "you"
#define DB_DBAS_NAME "yourdb"


int main(int argc, char *argv[])
{
MYSQL my_connection;

int res;
char * sqlstr = "select * from .....";

mysql_init(&my_connection);


if (mysql_real_connect(&my_connection, DB_HOST_NAME, DB_USER_NAME, DB_USER_PWD,DB_DBAS_NAME,0,NULL,CLIENT_FOUND_ROWS))
{
printf("Connection success\n");
res = mysql_query(&my_connection, sqlstr);

if (!res)
{
printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里头的函数返回受表中影响的行数*/
}
else
{
//分别打印出错误代码及详细信息
fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
mysql_close(&my_connection);
}
else
{
fprintf(stderr, "Connection failed\n");

if (mysql_errno(&my_connection))
{
fprintf(stderr, "Connection error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
}
return EXIT_SUCCESS;
}

linux下 c操作 mysql数据库
xlbdan 2007-08-16
  • 打赏
  • 举报
回复
C操作数据库,就用过嵌入在C语言中的SQL来实现.写一小段吧:

exec sql include sqlca;

int main()
{
EXEC SQL CONNECT TO "test";

EXEC SQL CREATE TABLE mylib
(B_NUM INT UNIQUE,B_NAME CHAR(9),T_NUM INT,I_NUM INT,U_NAME CHAR(9));
if(sqlca.sqlcode==0)
{
printf("create mylib successed\n");
}
else
printf("create mylib failed\n");

EXEC SQL INSERT INTO mylib VALUES(1,'C',10,10,NULL);
EXEC SQL INSERT INTO mylib VALUES(2,'C++',20,20,NULL);

EXEC SQL COMMIT;
EXEC SQL DISCONNECT CURRENT;
return 0;
}
~

70,033

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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