参考自己的http://blog.csdn.net/coder_xia/article/details/6746185,其中有一个给iodbc管理器添加菜单项。不过问题在于:在添加菜单栏的时候,如果菜单命令为:/usr/bin/iodbcadm-gtk,虽然能启动iodbc管理工具,不过对DSN的修改(不论添加还是删除)却不会起任何作用,为什么呢?
个人的理解是,如同对网络配置的修改,最终还是需要映射到文件的修改的,比如网络文件修改,ip地址对应/etc/network/interfaces ,DNS是对应/etc/resolv.conf,启动则都是在/etc/init.d。同样的,iodbcadm对dsn的修改,文件则是位于/etc/odbc.ini和/etc/odbcinst.ini。而普通用户,对于/etc下文件,貌似没有修改权限的吧,所以怎么配dsn都是枉然了吧(网络配置的话,应该是有文件权限的,不过从经验看,也不是即时生效的那种,应该是特殊处理)
解决方案,请参考
http://blog.163.com/prevBlogPerma.do?host=washion2008&srl=144227200911227715162&mode=prev
将菜单命令改为gksu iodbcadm-gtk,然后点击运行即可。虽然查到的资料说,也可以sudo iodbcadm-gtk,不过如上面连接所说: people should use gksudo in the terminal to launch a graphical application with root privileges; for example "gksudo gedit". It is also possible to use "sudo gedit",but it is not a good way to do it, because gksudo sets up things for a graphical environment, but sudo sets them up for a text environment. (or something like this)
就楼主自己验证的情况而言,在gksu下启动,是相当于以root用户启动的,因为切换到root登录后,dsn的修改值是与gksu启动管理器得到的是相同的,而sudo相当于是当前用户启动的,只是临时获得了root权限,所以通过sudo启动后,从管理器窗口看到的是与root用户下看到的DSN是不同的(由于总结是在自己电脑,所以不带截图,文字说明下:为了测试用户dsn需要的参数,分别用gksu新建的菜单栏点击进入编辑,添加了example,hello,fuck等测试dsn,在root登陆下,这些都是存在的;而sudo下编辑的,则只有先前添加的example)
不过经测试,这里会有个问题,如果gksu启动,则设置的dsn是root用户的,我们在普通用户下写代码,代码中会提示[unixODBC][Driver Manager]Data source name not found, and no default driver specified,即访问不到root的dsn,而用sudo启动的则可以。所以还是需要用sudo启动,来设置dsn,供编程使用。
当然,gksu也是位于/usr/bin下,gksudo是个符号连接,指向gksu,如同sudo至于su,莫非是考虑用户习惯?说到符号连接,在今天添加DTL库的过程中,灵光一现添加的符号连接,想想还是不错的
今天突然遇到个 Type 'TIMESTAMP_STRUCT' could not be resolved 的问题,当时就觉得疼了,因为这个虽然一看不是C语言的类型,不过应该在开发包中有定义才对啊。于是在老大带领下,打开我的include路径,找到个date_utl.h,拷贝过来sql.h(当时遇到个找不到sql.h的问题,用到它的不就是dtl中的头文件呢么)和sqlext.h的包含,突然程序通了。更high的是,把那两行注释起来也行了,这个,真的很无语了,起初死活关联不上的,突然就关联上了,在死活搜不出答案之后居然还去发了个帖子,结果发了之后,下班之前,就试出这个结果,话说,叹个气吧还是。。。
不过搜到的一些东东还是蛮有用的,比如 http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.apdv.cli.doc%2Fdoc%2Fr0000527.html 就是,一般编程用的类型和数据库类型是不一样的,所以ODBC对此进行了封装。另外http://www-aladin.gsi.de/www/dox_dev/CTBodbc/html/CTBodbcTime_8hxx-source.html ,和DTL 的FAQ也不错。ODBC什么的,继续吧
菜鸟go go go ~~~