怎样用ADO连接南方片中的Sybase数据库SHDP.db

分类:博客, 水文, 资源 标签:

今天开始接触南方片水文资料整汇编系统,想用外部程序调用系统中的一部分数据,于是看了下安装目录,安装目录下面有HDPdb文件夹,有两个文件HDPsrc.mdb、SHDP.db,很明显.mdb是Access格式的了,使用Access打开即可。但发现需要的数据并不在这个库里面,于是盯上了SHDP.db文件,采用.db的数据库类型有很多,到底这个SHDP.db是什么数据库系统创建的呢?

再到安装目录下面看下有什么可提供线索的东西,Sybase!,就它,然而Sybase可是有很多个版本的,南方片使用的是哪个版本呢?又当如何链接呢?

开始想到最先试下ODBC中创建DSN,打开相关设置后发现并没有Sybase Driver,这就奇怪了,如果没有相应的驱动,南方片怎样链接到呢?于是想到直接链接而不通过ODBC,有人使用libsybdb.dll可以直接访问,但下载了一些相关的libsybdb.dll文件有访问越界的的错误,就没再深入分析。

又返回到安装目录下,更改Sybase文件夹名字,运行南方片,哈,出错了!这是个好兆头,即肯定调用了里面的相关文件,进入Sybase目录后有好几个文件:dbeng50.exe、dbl50t.dll、wl50ent.dll、wod50t.dll、wtr50t.dll。搜索dbeng50.exe,看来使用的是Sybase 5.0版的数据库了。

难道只在注册表中创建DSN,到注册表HKEY_LOCAL_MACNINE\S0FTWARE\ODBC\ODBC.INI路径下,居然没找到,到底在哪里创建了呢?猜测使用了动态创建DNS的方法,而注册表中创建DSN肯定会有Sybase这样的字眼,于是在注册表内搜索Sybase,经过多次F3查找下一个,终于发现[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\SHDPdb],原来不是创建在HKEY_LOCAL_MACNINE之下,而是创建到HKEY_CURRENT_USER下,这下豁然开朗了。

运行南方版后关闭,这个注册表键值并未消失,说明也不是动态创建的,当然南方片水文资料整汇编系统中的设置数据库路径,在这里做出相应修改即可。

利用ADO的ODBC驱动再次连接这个DSN,测试连接,果然连接成功!,这下我写的程序就可以自由地调用南方片水文资料整汇编系统的相关数据了,当然做相关的导入导出和处理就很容易了,小功告成。



分类:博客, 水文, 资源 标签:

发表评论

You must be logged in to post a comment.