ADOX.CATALOG的东东

来源:互联网 发布:租号玩软件下载 编辑:程序博客网 时间:2024/05/16 12:03

自己在搞老钟的软件时候很有想法,把数据库也要区域化,所以试着做所谓的“翻译”,目前整了ACCESS的,还不知道好用不。

实际上就是同时有两套资源,一套用于捕捉识别→定位,一套用于更新,当然,两套内容被放到了顺序一一对应的两个数组里。

主要的工作是,更改ACCESS里的表名、表中的列名,最后更改文件名。

要查到现有数据库的表名才能和第一套资源进行比对,所以

开始的时候想,能不能在TSQL里写查询,网上也给出的可行性,就是像SQL SERVER一样查询系统表。可是,ACCESS的系统表有权限限制,没弄明白怎么在代码里改权限(估计即便弄明白了,也要引用ACCESS的某个模块,搞一堆复杂的方法),所以就放弃了。

后来看到可以用ADOX直接修改,高兴了。

可是不知道怎么用CATALOG连接数据库,试着用连接字符串、OLEDBCONNECTION和DBCONNECTION向CATALOG.ACTIVECONNECTION赋值,都报错,不高兴了。

最后看到说,ACTIVECONNECTION只能接受已经打开的ADODB.CONNECTION,虽然觉得不好,但也只能这样。

真正的问题:

在CATALOG对表名修改后,并没有即时的在硬盘上生效,而CATALOG也没有提供更新的功能。这使得每次操作后,若需要上一次操作结果,就必须彻底释放上一个CATALOG或重新实例化新的CATALOG。

在一个试验用的小程序里,不给出ADODB.CONNECTION,而使用CATALOG.CREATE(connectionstring),我发现即便让CATALOG=NULL也不能解除数据库的锁定状态,也就是说,连接仍然开着;而提供了CONNECTION的情形能够正常的解锁(connection.CLOSE())。

这似乎造成了一个硌硬人的局面:在创建.mdb文件后,连接要保持打开到程序结束!

其实回头想一想,就会知道,ACTIVECONNECTION属性就是连接所在的位置,只要将这个连接关闭就可以了,当然,要关闭这个连接,就不能只引用ADOX,还必须引用ADO,至于是强制转换还是什么的,那就好说了。

这个试验使我明白了:ADO和ADOX是天造地设的一对,任何试图拆散他们的想法终会遇到重重困难~

reload note: 2010-04-20 http://blog.renren.com/blog/bp/Qg_2tDKCvl
原创粉丝点击