美文网首页
2019-04-03

2019-04-03

作者: 靖靖不想静静 | 来源:发表于2019-04-03 15:57 被阅读0次

    上一篇讲过unixODBC的两个配置文件,和通过unixODBC连接对应的数据库,那么具体的源码层面,unixODBC是如何实现的呢?

    如果熟悉动态链接库的同学,可能知道动态链接库的两种打开方式,一种是通过Makefile,进行gcc编译的时候,指定so库,-lpthread 这种,将libpthread.so链接库加载进来。另外一种就更方便了,通过调用dlopen和dlsym函数来将动态库里面的函数加载进来。(关于这方面,我后面文章会单独进行补充,还有系统的钩子函数)

    查看源码,我们发现,unixODBC也是通过使用dlopen和dlsym将实际的数据库驱动加载进来。所以,你要说,unixODBC和各个数据库驱动之间有什么关系,相当于unixODBC给各个数据库驱动c语言版本,提供了一套标准,大家的函数名都要这么叫,大家的函数参数和实现的功能都应该一样。但是具体内部各个数据库的实现,以及涉及到的结构体和底层的网络封装之类的,可以各有差异(反正unixODBC只是通过函数指针指过去,有点类似c++里面的 private value 和 get方法)。所以呢,没有各个数据库的驱动是不行的,通过unixODBC是连接不进去滴。

    相关文章

      网友评论

          本文标题:2019-04-03

          本文链接:https://www.haomeiwen.com/subject/djszbqtx.html