ggff112
linux 用C连接数据库,把连接信息写成配置文件。。。
想在linux下写一C程序,需要用到数据库,所以就要连接数据库。能不能把有关数据库连接的一些信息独立出来,写成一配置文件,这样在应用的时候直接修改配置文件,就可以连接库而不用再次编译程序。能不能指点指点有关这些方面的知识点,现在是只知道有这样的功能,但不知道具体是怎么实现的。
谢谢
yecheng_110
可以呀
文件类似这样
[quote]
DBServer = 127.0.0.1
DBName = name
DBUser = user
DBPassword = psw
[/quote]
连接数据库的信息就记录在这里
需要的时候读入内存就行了
Sorehead
程序写个信号处理函数,函数中重新调用配置参数;改了配置信息后,就给程序发个信号
flw
二楼五楼理解错误,三楼理解正确,四楼没理解。六楼很惊讶楼主为什么连这样的问题也要问。
打开配置文件,读出配置文件里的连接信息,然后据此建立连接,很难吗?
思路你都有了,难道还有搞不定的?
哦,我明白了,楼主不是程序员,至少不是 C 程序员。
你可以让你的手下去做这事儿。很简单的。
net_robber
to flw: 问题描述不清,没说清楚 是将配置独立成文件 还是要在配置文件更新后,自动reload
flw
[quote]原帖由 [i]net_robber[/i] 于 2008-2-20 11:21 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981425&ptid=1054535][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
to flw: 问题描述不清,没说清楚 是将配置独立成文件 还是要在配置文件更新后,自动reload [/quote]
人家说得很清楚。是你理解有问题。
zszyj
[quote]原帖由 [i]ggff112[/i] 于 2008-2-19 22:05 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7980255&ptid=1054535][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
想在linux下写一C程序,需要用到数据库,所以就要连接数据库。能不能把有关数据库连接的一些信息独立出来,写成一配置文件,这样在应用的时候直接修改配置文件,就可以连接库而不用再次编译程序。能不能指点指点 ... [/quote]
LZ要弄清楚几个问题:
1. 你到底是要"不用再次编译程序", 还是自动"reload", 而这个"reload"指的是自动断掉原数据库连接,重新连接新数据库?有这种应用的可能吗?正在进行中的事务怎么办, 原有数据库内容是否能自动同步到新数据库? 这个自动reload看得有点档可思议.
2.如果只是想数据库连接信息与编译无关,是很简单的事情. 这首先看你用的是什么数据库,oracle/db2/informix/其它? 其次看你用的是什么编程接口, Esql/C, proc*c, odbc, oci, cli?每种编程接口都有自已的方法, 如果是Esql/C或者proc/c,则很简单,打开数据库的指令中,数据库名称是允许使用变量的,直接从配置读然后传进去就是了.
3. 如果你想的是自动断链再重连新库, 那么你还是着重考虑如何保证数据正确性,交易完整性的问题吧,其它事情就别想了.
[[i] 本帖最后由 zszyj 于 2008-2-20 12:50 编辑 [/i]]
flw
[quote]原帖由 [i]zszyj[/i] 于 2008-2-20 12:46 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981763&ptid=1054535][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
1. 你到底是要"不用再次编译程序", 还是自动"reload", 而这个"reload"指的是自动断掉原数据库连接,重新连接新数据库?有这种应用的可能吗?正在进行中的事务怎么办, 原有数据库内容是否能自动同步到新数据库? 这个自动reload看得有点档可思议.[/quote]
人家说的很清楚,是不用再次编译程序。你非要理解成 reload,还让人家“搞清楚”,太好玩了。
galaxywar
可以用ini文件格式,读写的函数可以在网上搜到
zszyj
[quote]原帖由 [i]flw[/i] 于 2008-2-20 12:50 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981794&ptid=1054535][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
人家说的很清楚,是不用再次编译程序。你非要理解成 reload,还让人家“搞清楚”,太好玩了。 [/quote]
我是看7楼的回复. 也没有什么非要.
[[i] 本帖最后由 zszyj 于 2008-2-20 14:30 编辑 [/i]]