最近这两天比较忙,昨天下午突然头说要我帮个忙,有个客户要用数据库,我当时就晕了,多年不玩数据库,突然来个这,要不是看在用的是QNX系统,我才懒得帮忙,不用说数据库当然是QDB,没有办法,就只有看文档,经过一天的奋斗,终于出来,满足了客户的需求,我也就解放了,想想也许其他高手也玩过,就班门弄斧的写一篇吧,或许可以钓到高手?
第一:QDB实际是SQLite的变种,SQLite是个开源的,原来上学时玩的都是MySql,真还没有玩过这个东西,看来还是才疏学浅也
第二:数据这玩都是要分Server和Client,QDB也肯定不例外,但是我的印象中用数据库就是查、删、插,实际别的也没有用过,一般情况一直接装,装完库创建、表创建就OK,但是QDB还有点不一样,那就是要配置,先看看Server配置的参数
qdb [-A] [-c config_file] [-C policy] [-D]
[-I test] [-n mountpoint] [-N control] [-o option[,option2...]]
[-P permissions] [-R mode]
[-r mode] [-s routine]
[-t timeout] [-T max_timeout] [-vV] [-W time] [-X path]
下面是本人对各个参数的理解,不对之处还望见谅:
-A 关闭独占模式,可以多个APP同时使用数据库
-c 这个主要是加配置文件,由于这个是核心,下面会讲的
-C 这个主要是针对多个Client共享库的方法,有四种unique/private/resue/share,相信大家都也明白,第一个就是每个Client重新连接时就重新连一次,没有记忆效应;第二个就大方多了,每个Client连一个就保持住,一直到Client死掉,太奢侈了;第三个与第二个比较像,就是说Client完了不是把这个链接销毁,而是放在一个池里面保存,可能以后会用;第四个与第一个比较像,就是多个Client可以共享,一般我都选这个
-D 这个主要是问你是否禁止共享cache,一般并发不要求还是禁止吧
-I 完整性测试的要求none/basic/partial/full,我感觉没有什么用
-n 数据库创建玩的挂载点
-N 数据库的控制文件,貌似是个空,位置/dev/qdb/.control
-o 这个里面比较多,不用也没有什么大碍,不愧为混杂选项
-P 访问权限,不用说,默认吧0664
-R Server创建库和恢复库的模式 /manual/auto/set,不用解释吧,一目了然
-r 你可以理解为Client恢复模式,肯定没有set这项了
-s 感觉你要有特殊字符集时可以用
-t 设置默认超时时间
-T 设置最大超时时间,对了默认是毫秒
-vV 这个不用说了吧
-W 也是个时间,主要针对往数据库里面写东西
-X 这个东西我感觉就是当数据库崩溃了,防止留下垃圾,用着脚本这个来做善后处理
现在说那个-c 后面的config文件吧,这个东西配置不好,一切免谈
首先要写个要在里面什么吧,就以创建表结构位置吧,在xxx.sql里面写下下面的东西:
CREATE TABLE customers(
customerid INTEGER PRIMARY KEY AUTOINCREMENT,
firstname TEXT,
lastname TEXT
);
实际你也可以ALTER TABLE 或者INSERT,理论上SQL语句都可以用,不过我没有全体验
下面就写config文件吧,起个名字:xxx.fg
[databasename]
Filename = databasename
Schema File = xxx.sql(如果没有xxx.sql文件,你可以用Schema = 自己写SQL语句)
Auto Attach = databasename
Vacuum Attached= TRUE
Compression= bzip
上面只是config文件的部分,是就可以,你可以配全,有可以看看,这个可以写很多的,但是对个数据库以名字分开的
实际上到现在你的Server就已经Ok了
如果要运行Client那就是小菜一碟了,最简单就是这个:qdbc -d pathdatabase
接下来你几可以随心所欲的而发挥你的SQL命令有事了
不过对数据可以的而操作大家还是比较喜欢在程序里面用SQL语句,当然了,不然要计算机语言干什么呢?
和数据库打交道的程序都是一个模板,就那几句,不同数据库只是API名字不一样而起,QDB就是这样,下面是几个常用的API,你可以看看:
qdb_connect()
qdb_data_source()
qdb_disconnect()
qdb_freeresult()
qdb_getdbsize()
qdb_geterrmsg()
qdb_getoption()
qdb_getresult()
qdb_parameters()
qdb_query()
qdb_statement()
qdb_stmt_exec()
qdb_stmt_init()
qdb_stmt_free()
对了在编程时你要include <qdb/qdb.h>,貌似要手工添加所需要的库libdqb.so.1
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。