Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

路漫漫,长修远,我们不能没有钱
随笔 - 172, 文章 - 0, 评论 - 257, 引用 - 0
数据加载中……

[导入]发现一个不错的数据库驱动封装包libsdb, 小,稳定,简单,opensource

LibSDB官方资料 http://siag.nu/libsdb/  提供各个版本的source安装包下载, 说明文档, 一个demo
这个东西具有以下优点 :
1 小
2 原生c语言编写, 移植相对简单
3 采用类似jdbc这样的url连接各种数据库, 目前支持ODBC(cygwin),
Lago,Mysql,Sqlite,Mimer,Postgresql,Oracle,Gdbm,MiniSQL 4 openSource 这个就不多说了

缺点:
 暂时未发现获取字段名的接口, 我只能分析select语句的 字段列表,自己来维护
* query.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <unistd.h>

#include "common.h"
#include "sdb.h"

static int persistent = 0;

/*回调函数,获取查询数据的接口,用户提供
*@ param int n 字段数
*@ param char **p 结果集,全部为字符类型了,自己去做转换
*@ param void *closure 出口参数, 结果集最终会通过这里返回,但是处理工作由你来做
*/
static int db_callback(int n, char **p, void *closure) {
int i;
char b[10];

if (!n)
return 0;

sprintf(b, "%d ", n);
printf("共%s个字段\t", b); /* 列数 */

for (i = 0; i < n; i++) {
char *q = p[i];

if (q == NULL)
q = "";

sprintf(b, "%ld ", (long)strlen(q));
//printf("共%s位\t", b); //打印数据长度
printf("%s\t", q);
}

printf("\n");
return 0;
}



int main(int argc, char **argv){
char u[1024];
char *db;
char sqlstr[1024];

if (argc < 1) {
printf("Usage: sdb_client [options] url\n");
exit(0);
}

//打开url指向数据库,
db = sdb_open(argv[1]);
if (db == NULL) {
printf("sdb_open 失败");
}
sprintf(sqlstr,"SELECT %s, %s, %s, %s FROM %s "
"ORDER BY acttime ",
"acttime",
"seq_num",
"msg",
"connname",
"mtmsg");
//查询 , 传递 db(数据库连接) , sqlstr (sql语句), db_callback(回调函数指针), 参数出口
sdb_query(db, sqlstr, db_callback, NULL);
if (db) sdb_close(db);
}


sdb_query原型:
 int sdb_query(char *url, char *query,int (*callback)(int, char **, void *), void *closure)

各种数据库对应的URL
mysql:host=XXX:db=XXX:uid=XXX:pwd=XXX
postgres:host=XXX:db=XXX:port=XXX
oracle:uid=XXX:pwd=XXX OR oracle:uid=username/password@instance
sqlite:db=/full/path/to/db
lago:host=XXX:port=XXX:db=XXX:uid=XXX:pwd=XXX
mimer:
odbc:dsn=postgresql
gdbm:db=foo.db

posted on 2006-01-12 09:56 Khan 阅读(888) 评论(1)  编辑 收藏 引用 所属分类: GCC/G++

评论

# re: [导入]发现一个不错的数据库驱动封装包libsdb, 小,稳定,简单,opensource  回复  更多评论   

vim的代码着色比devcpp的看起来舒服多了
2006-01-27 13:51 | 思春贴调查员(Khan)

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理