明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1984|回复: 4

数据库连接问题

[复制链接]
发表于 2021-4-13 10:11:06 | 显示全部楼层 |阅读模式
Automation 错误。 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序Description        [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

请教各位大神,lisp怎么连接数据库?如何配置
 楼主| 发表于 2021-4-13 11:22:54 | 显示全部楼层
  64位机器上ODBC的操作方法与32位机器是不一样的,如果直接从控制面板上-管理员工具-ODBC进去的话会发现User DSN以及System DSN里面都为空,ADD的时候连ODBC Driver都找不到,正确的方法应该是从C:\WINDOWS\SysWOW64进入后,找到odbcad32.exe,打开之后就能看到已有的System DSN及已安装的ODBC Driver.(为什么要命名为odbcad32我实在是不太理解).

      接下来要说说System DSN的移除,一般情况下是能正常移除的,可昨天机器突然抽风,我需要用的那个DSN无论如何都连不上,竟然还删不掉,于是只好从注册表里删了。按理说注册表的位置应该是:

      HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources

      然而如果你直接从run里属于regedit是看不见这个目录的,原因还是因为是64位机,运行C:\WINDOWS\SysWOW64里的regedit.exe就可以找到 并删除了(这次不是regedit32了).

     不是太懂Windows这样设计和命名的原因是什么,不过问题解决了就行了
————————————————
版权声明:本文为CSDN博主「wander754085」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wander754085/article/details/8128547/
 楼主| 发表于 2021-4-13 14:15:52 | 显示全部楼层
本帖最后由 ForYang 于 2021-4-13 14:17 编辑

;;;函数名:MECAD_ADOLib_ConnectString1
;;;输入变量:dbFile(打开数据库的路径名)
;;;输出值:ConnectString
;;;注释:使用ODBC(不需要DSN)连接MS-Access数据库,
;;;     示例: (MECAD_ADOLib_ConnectString1 "d:/dbfiles/products.mdb")
;;;设计者:
;;;设计日期:2013年8月
;;;修改者:
;;;修改日期:
(defun MECAD_ADOLib_ConnectString1 (dbFile / ConnectString proc_arch)
  (if (and
(setq proc_arch (getenv "ROCESSOR_ARCHITECTURE"))
(< 1 (strlen proc_arch))
(eq "64" (substr proc_arch (1- (strlen proc_arch))))
      )
    (progn
      (setq ConnectString
      (STRCAT
        "rovider=MSDASQL;"
        "Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
        "DBQ="
        dbFile
      )
      )     ;对于64位系统的数据库引擎连接
    )
    (progn
      (setq ConnectString
      (strcat
        "rovider=MSDASQL;"
        "Driver={Microsoft Access Driver (*.mdb)};"
        "DBQ="
        dbFile
      )
      )     ;对于32位系统的数据库引擎连接
    )
  )     ;end if
  ConnectString
)
;;;end if

;;;函数名:MECAD_ADOLib_ConnectString2
;;;输入变量:dbFile(打开数据库的路径名)
;;;输出值:ConnectString
;;;注释:使用JET4.0连接MS-Access数据库,64位系统上,JET引擎已不支持,需改用ACE引擎
;;;     示例: (MECAD_ADOLib_ConnectString2 "d:/dbfiles/products.mdb")
;;;设计者:
;;;设计日期:2013年8月
;;;修改者:
;;;修改日期:
(defun MECAD_ADOLib_ConnectString2 (dbFile / ConnectString proc_arch)
  (if (and
(setq proc_arch (getenv "ROCESSOR_ARCHITECTURE"))
(< 1 (strlen proc_arch))
(eq "64" (substr proc_arch (1- (strlen proc_arch))))
      )
    (progn
      (setq ConnectString
      (strcat "rovider=Microsoft.ACE.OLEDB.12.0;"
       "Data Source="
       dbFile
       "ersist Security Info=False"
      )
      )     ;对于64位系统的数据库引擎连接
    )
    (progn
      (setq ConnectString
      (strcat "rovider=Microsoft.JET.OLEDB.4.0;"
       "Data Source="
       dbFile
       "ersist Security Info=False"
      )
      )     ;对于32位系统的数据库引擎连接
    )
  )     ;end if
  ConnectString
)
;;;end if
;;;;测试函数的代码如下
(defun c:adotest (/ dbfile *ConnectionObject* result SQLStatement)
  (setq dbfile (getfiled "" "C:\\" "mdb" 4))
  (if dbfile
    (progn
      ;;打开MDB数据库
      (setq *ConnectionObject* (ADOLISP_ConnectToDB (MECAD_ADOLib_ConnectString1 dbfile) "" ""))
      ;(setq *ConnectionObject* (ADOLISP_ConnectToDB (MECAD_ADOLib_ConnectString2 dbfile) "" ""))
      (if *ConnectionObject*
(progn
   ;;数据库查询
   (setq result (ADOLISP_GetTablesAndViews *ConnectionObject*))   
   ;;显示查询结果
   (print result)
   ;;关闭数据库
   (ADOLISP_DisconnectFromDB *ConnectionObject*)
)
      )
    )
  )
  (princ)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-9-24 10:40:18 | 显示全部楼层
有vbnet连接数据库的源码吗?
发表于 2022-11-2 00:23:42 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 09:57 , Processed in 0.165340 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表