明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1689|回复: 4

[资源] 数据库连接函数ADOLISP,目前测试32位CAD可用(系统32位和64位均可)

[复制链接]
发表于 2013-8-25 11:38 | 显示全部楼层 |阅读模式
本帖最后由 yj_hust 于 2013-8-25 11:45 编辑

数据库连接函数ADOLISP,目前测试32位CAD可用(系统32位和64位均可)

[pcode=lisp,true]

;;; An example of using ADOLISP_Library.lsp
(if (not ADOLISP_ConnectToDB)
  (load "ADOLISP_Library.lsp")
)
(defun C:Example (/ ConnectionObject Result ConnectString SQLStatement
                  TablesList ColumnsList
                 )
  ;; Connecting to the database ...
  (setq ConnectString
         "Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\CAD\\ADOLISP_test.mdb"
  )
  ;; An alternative connect string
  ;(setq ConnectString "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\CAD\\ADOLISP_test.mdb;Persist Security Info=False")
  (setq ConnectString "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CAD\\ADOLISP_test.accdb;Persist Security Info=False")
  (prompt (strcat "\n\nConnecting to the database using \n\""
                  ConnectString
                  "\""
          )
  )
  (if (not (setq ConnectionObject
                  (ADOLISP_ConnectToDB ConnectString "admin" "")
           )
      )
    (progn
      (prompt "\nConnection failed!")
      (ADOLISP_ErrorPrinter)
    )
    (prompt "\nResult: succeeded!")
  )
  ;; If we got a connection ...
  (if ConnectionObject
    (progn
      ;; Retrieve some data
      (setq
        SQLStatement "SELECT * FROM DESKS WHERE AutoCAD_HANDLE = '2A'"
      )
      (prompt
        (strcat
          "\n\nExecuting a SELECT statement to retrieve some data:\n\""
          SQLStatement
          "\""
        )
      )
      (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
        (progn
          (prompt "\nResult: ")
          (print Result)
        )
        (progn
          (prompt "\nFailed!")
          (ADOLISP_ErrorPrinter)
        )
      )
      ;; Insert a row
      (setq SQLStatement
             "INSERT INTO DESKS (AUTOCAD_HANDLE, AUTOCAD_DRAWING, OCCUPANT, EXTENSION, PROPERTY_NUMBER) VALUES ('ABCDEF00', 'TESTDRAWING', 'Barbara', '123456', '654321')"
      )
      (prompt (strcat "\n\nInserting a row:\n\""
                      SQLStatement
                      "\""
              )
      )
      (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
        (prompt "\nResult:\nSucceeded!")
        (progn
          (prompt "\nFailed!")
          (ADOLISP_ErrorPrinter)
        )
      )
      ;; Change a row or rows
      (setq SQLStatement
             "UPDATE DESKS SET OCCUPANT='Me' WHERE AUTOCAD_DRAWING='TESTDRAWING'"
      )
      (prompt (strcat "\n\nChanging a row or rows:\n\""
                      SQLStatement
                      "\""
              )
      )
      (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
        (prompt "\nResult:\nSucceeded!")
        (progn
          (prompt "\nFailed!")
          (ADOLISP_ErrorPrinter)
        )
      )
      ;; Delete a row or rows
      (setq SQLStatement
             "DELETE FROM DESKS WHERE AUTOCAD_DRAWING='TESTDRAWING'"
      )
      (prompt (strcat "\n\nDeleting a row or rows:\n\""
                      SQLStatement
                      "\""
              )
      )
      (if (setq Result (ADOLISP_DoSQL ConnectionObject SQLStatement))
        (prompt "\nResult:\nSucceeded!")
        (progn
          (prompt "\nFailed!")
          (ADOLISP_ErrorPrinter)
        )
      )
      ;; Just for grins, see what's in the database
      (prompt "\n\nTables and views in the database:")
      (setq TablesList (ADOLISP_GetTablesAndViews ConnectionObject))
      (print (ADOLISP_GetTablesAndViews ConnectionObject))
      (prompt (strcat "\n\nColumn properties in table "
                      (caar TablesList)
                      ":"
              )
      )
      (setq ColumnsList
             (ADOLISP_GetColumns
               ConnectionObject
               (caar TablesList)
             )
      )
      (foreach Item ColumnsList
        (print Item)
      )
      ;; Disconnect
      (prompt "\n\nDisconnecting from the database\n")
      (ADOLISP_DisconnectFromDB ConnectionObject)
      ;; Although the following is unnecessary in this case (because
      ;; ConnectionObject is a local variable), it's never a _bad_
      ;; idea to NIL-out the connection object.
      (setq ConnectionObject nil)
    )
  )
  (prin1)
)
(prin1)

[/pcode]





本帖子中包含更多资源

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

x
发表于 2013-8-25 14:22 | 显示全部楼层
个别电脑安装数据库引擎.
发表于 2013-8-25 19:26 来自手机 | 显示全部楼层
这个太深了,楼主多给大家举点例吧!
发表于 2013-8-26 18:23 | 显示全部楼层
刚刚接触ADOLISP。
发表于 2015-9-2 13:46 | 显示全部楼层
正在找,谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-14 05:52 , Processed in 0.137346 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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