本帖最后由 dcl1214 于 2025-12-3 19:31 编辑
网友答:
楼主,这种程序是子程序吗,还是示范代码

- (setq db_path "C:\\雨污水管线数据库.mdb")
- (setq DBConnection (vl-catch-all-apply 'vlax-create-object(list "adodb.connection")))
- ;创建并返回ADO Connection对象 ①
- (setq RSObject (vl-catch-all-apply 'vlax-create-object(list "adodb.recordset")))
- ;创建并返回ADO RecordSet对象 adok-adConnectUnspecified ②
- (setq connstring
- (strcat
- ;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";32位的cad调用方法
- "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=";64位的cad调用方法
- db_path
- )
- ) ;设置数据库连接字符串 ③
- (setq open-zt (vl-catch-all-apply
- (function (lambda ()
- (vlax-invoke-method
- DBConnection "open"
- connstring ""
- ""
- adok-adConnectUnspecified
- )
- )
- )
- ) ;如果数据库已经连接成功了就跳过去,执行下面代码 ④
- )
- (if (vl-catch-all-error-p open-zt) ;若果上面开启数据库失败了
- (alert (vl-catch-all-error-message open-zt)) ;弹出错误提示
- )
- (setq sql "select * from 点表")
- (setq rs (vl-catch-all-apply
- 'vlax-invoke-method
- (list DBConnection "Execute" sql nil -1)
- )
- )
- ;执行sql语句查询 ⑤
- (if (vl-catch-all-error-p rs) ;若果上面开启数据库失败了
- (alert (vl-catch-all-error-message rs)) ;弹出错误提示
- )
- (vl-catch-all-apply 'vlax-release-object (list rs))
- (vl-catch-all-apply 'vlax-release-object (list RSObject))
- ;释放记录集对象 ⑥
- (vl-catch-all-apply
- 'vlax-invoke-method
- (list DBConnection "close")
- ) ;关闭数据库连接对象 ⑦
- (vl-catch-all-apply
- 'vlax-release-object
- (list DBConnection)
- ) ;释放连接对象 ⑧
- (setq DBConnection
- nil
- RSObject nil
- ) ;变量做空 ⑨
- (gc) ;释放内存 ⑩