当前位置: 代码迷 >> C语言 >> 求教有关C与数据库
  详细解决方案

求教有关C与数据库

热度:121   发布时间:2008-02-19 09:56:24.0
求教有关C与数据库
请问用C可以与数据库连接吗?
我用ACCESS做了个简单的数据库想进行测试,那要怎么用C调用出里面的数据呢?

[[it] 本帖最后由 kingiswei 于 2008-2-19 12:26 编辑 [/it]]
搜索更多相关的解决方案: 数据库  ACCESS  

----------------解决方案--------------------------------------------------------
假定ACESSE是指MS Access,就先说Access应该只是一个数据库前端。但如果你想存取它的默认文件格式内的资料,可以使用MDB Tools:http://mdbtools.sourceforge.net/。如果你用的后端不是mdb,就要找别的方法。
----------------解决方案--------------------------------------------------------
不能用C直接调用么
----------------解决方案--------------------------------------------------------
C没有支持关系数据库的标准函数。要用C调用的话,最容易还是用外部库。如果这有点困难,我建议你试别的数据库格式(例如SQLite),纯文本,或者较高阶的语言。如果速度不是关键,Python也许更适合。
----------------解决方案--------------------------------------------------------
想用纯文本但是不知道要用什么方法调用
----------------解决方案--------------------------------------------------------
提出一个简单的例子:

SAMPLE.TXT:
Bob 12
Joe 15

query.c:
#include <stdio.h>
struct record
{
    char name[80];
    int age;
};
int main(int argc, char *argv[])
{
    struct record records[100];
    int index = 0;
    FILE *file = fopen(argv[1], "r");
    while (fscanf(file, "%s %d", records[index].name, &records[index].age) != EOF)
        index++;
    printf("%s is %d years old.\n", records[0].name, records[0].age);
    printf("%s, however, is %d years old.\n", records[1].name, records[1].age);
    printf("Together, they have existed for %d years.\n", records[0].age + records[1].age);
    return 0;
}

执行:query SAMPLE.TXT

为了别把这个例子弄得太复杂,我故意忽视了一些重要的问题。name和records都有任意的长度限制。假使SAMPLE.TXT内的资料太长,query会崩溃。如果没有命令行参数,或者参数指的文件根本不存在,也会发生同样的结果。如果输入SAMPLE.TXT的资料不符合格式,这也是一个问题。错误校验让你安排。这个程序应该输出:
Bob is 12 years old.
Joe, however, is 15 years old.
Together, they have existed for 27 years.
----------------解决方案--------------------------------------------------------
如果只需要简单的数据库操作的话,可以自己开发一个数据库。
----------------解决方案--------------------------------------------------------
深奥!!
----------------解决方案--------------------------------------------------------
  相关解决方案