设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 496|回复: 2

[原创] Lisp调用ODBC发送Sql语句操作Sqlite数据库

[复制链接]
发表于 2020-1-11 11:46:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 dcl1214 于 2020-2-2 23:56 编辑

  1. (defun $jz->db$        (sj / CARS dbjg0 dbjg sss)
  2.   (if (and sj (SETQ CARS (CAR sj)) (cdr sj))
  3.     (mapcar
  4.       '(lambda (z)
  5.          (MAPCAR (function (lambda (x y)
  6.                              (if y
  7.                                (CONS x y)
  8.                                (CONS x "")
  9.                              )
  10.                            )
  11.                  )
  12.                  CARS
  13.                  Z
  14.          )
  15.        )
  16.       (cdr sj)
  17.     )
  18.   )
  19. )
  20. (defun $jz->sql$ (tbname jz / sql-cdr sqls title sql-cdr-fd)
  21.   (if (and tbname jz)
  22.     (progn
  23.       (and (apply '= (mapcar 'length jz)) ;防止每一个表的数量不相等
  24.            (setq
  25.              jz
  26.               (mapcar
  27.                 (function (lambda (a)
  28.                             (mapcar (function (lambda (b)
  29.                                                 (if (not (= (type b) 'str))
  30.                                                   (vl-princ-to-string b)
  31.                                                   b
  32.                                                 )
  33.                                               )
  34.                                     )
  35.                                     a
  36.                             )
  37.                           )
  38.                 )
  39.                 jz
  40.               )
  41.            )                                ;防止不是字串型
  42.            (setq title (car jz))
  43.            (setq title (merge-str-by-bar title "`,`"))
  44.            (setq title (strcat "`" title "`"))
  45.            (setq title (strcat "(" title ")"))
  46.            (setq jz (cdr jz))
  47.            (setvar "modemacro" "转储Sql语句■■■■■■■■")
  48.            (setq sql-cdr
  49.                   (mapcar
  50.                     (function
  51.                       (lambda (a) (strcat "('" (merge-str-by-bar a "','") "')"))
  52.                     )
  53.                     jz
  54.                   )
  55.            )
  56.            (SETQ SQLS (CONS title sql-cdr))
  57.       )
  58.     )
  59.   )
  60.   sqls
  61. )
  62. (defun $ADO_ErrorProcessor$ (VLErrorObject    ConnectionObject
  63.                              /                      ErrorsObject
  64.                              ErrorObject      ErrorCount
  65.                              ErrorNumber      ErrorList
  66.                              ErrorValue              ReturnList
  67.                             )
  68.   ;; First get Visual LISP's error message
  69.   (IF VLErrorObject
  70.     (setq
  71.       ReturnList
  72.        (list
  73.          (list (cons "Visual LISP message"
  74.                      (vl-catch-all-error-message VLErrorObject)
  75.                )
  76.          )
  77.        )
  78.     )
  79.   )
  80.   ;; Get the ADO errors object and quantity
  81.   (setq        ErrorObject
  82.          (vl-catch-all-apply
  83.            'vlax-create-object
  84.            (LIST "ADODB.Error")
  85.          )
  86.   )
  87.   (setq        ErrorsObject
  88.          (vl-catch-all-apply
  89.            'vlax-get-property
  90.            (LIST ConnectionObject "Errors")
  91.          )
  92.   )
  93.   (setq        ErrorCount
  94.          (vl-catch-all-apply
  95.            'vlax-get-property
  96.            (LIST ErrorsObject "Count")
  97.          )
  98.   )
  99.   (setq ErrorNumber -1)
  100.   ;; Loop over all the ADO errors ...
  101.   (while (AND (NOT (vl-catch-all-error-p ErrorCount))
  102.               (< (setq ErrorNumber (1+ ErrorNumber)) ErrorCount)
  103.          )
  104.     ;; Get the error object of the current error
  105.     (setq
  106.       ErrorObject (vlax-get-property ErrorsObject "Item" ErrorNumber)
  107.       ;; Clear the list of items for this error
  108.       ErrorList          nil
  109.     )
  110.     ;; Loop over all possible error items of this error
  111.     (foreach ErrorProperty '("Description"    "HelpContext"
  112.                              "HelpFile"              "NativeError"
  113.                              "Number"              "SQLState"
  114.                              "Source"
  115.                             )
  116.       ;;  Get the value of the current item.  If it's a number ...
  117.       (if (numberp (setq ErrorValue
  118.                           (vlax-get-property ErrorObject ErrorProperty)
  119.                    )
  120.           )
  121.         ;; Convert it to a string for consistency
  122.         (setq ErrorValue (itoa ErrorValue))
  123.       )
  124.       ;; And store it
  125.       (setq ErrorList (cons (cons ErrorProperty ErrorValue) ErrorList))
  126.     )
  127.     ;; Add the list for the current error to the return value
  128.     (setq ReturnList (cons (reverse ErrorList) ReturnList))
  129.   )
  130.   ;; Set up the return value in the correct order
  131.   (reverse ReturnList)
  132. )
  133. (defun $DO-SQL-sqlite-ado$ (lst                         /
  134.                             $ADO_ConnectToDB$         adolisp_errorlist
  135.                             adolisp_fieldspropertieslist
  136.                             adolisp_lastsqlstatement
  137.                             CommandObject         connectionobject
  138.                             db-path                 FieldCount
  139.                             FieldItem                 FieldList
  140.                             FieldName                 FieldNumber
  141.                             FieldPropertiesList         FieldsObject
  142.                             IsError                 RecordsAffected
  143.                             RecordSetObject         ReturnValue
  144.                             sqlstatement         TempObject
  145.                             $TRANSACTION$         $install-ADO$
  146.                            )
  147.   (DEFUN $install-ADO$ (/ f exe-name ado Shell zt)
  148.     (if        (OR (SETQ F (FINDFILE "Ado"))
  149.             (SETQ F (FINDFILE "Ado"))
  150.         )
  151.       ()
  152.       (alert
  153.         "Ado文件夹找不到了,该文件夹里面是弥补微软操作系统所需要的驱动文件"
  154.       )
  155.     )
  156.     (if        (wcmatch (getenv "PROCESSOR_ARCHITECTURE") "[,*64,]")
  157.       (setq exe-name "sqliteodbc_w64.exe")
  158.       (setq exe-name "sqliteodbc.exe")
  159.     )
  160.     (and f (setq ado (findfile (strcat f "\\" exe-name))))
  161.     (if        ado
  162.       (progn
  163.         (IF (setq Shell
  164.                    (vl-catch-all-apply
  165.                      (FUNCTION
  166.                        (LAMBDA () (vlax-create-object "wscript.shell"))
  167.                      )
  168.                    )
  169.             )
  170.           (PROGN
  171.             (vl-catch-all-error-p
  172.               (setq zt
  173.                      (vl-catch-all-apply
  174.                        'vlax-invoke
  175.                        (list
  176.                          Shell
  177.                          'run
  178.                          (vl-prin1-to-string ado)
  179.                          1                ;隐藏窗口(10个参数,这里选择0)
  180.                          0                ;等待下载完毕(1 为等待,0 为不等待)
  181.                        )
  182.                      )
  183.               )
  184.             )
  185.             (and shell (vlax-release-object shell))
  186.           )
  187.         )
  188.       )
  189.       (alert
  190.         (strcat        exe-name
  191.                 "  找不到了,该文件属于重要驱动,请联系开发人员"
  192.         )
  193.       )
  194.     )
  195.   )
  196.   (defun $ADO_ConnectToDB$ (ConnectString
  197.                             UserName
  198.                             Password
  199.                             /
  200.                             adolisp_errorlist
  201.                             adolisp_lastsqlstatement
  202.                             ConnectionObject
  203.                             ConnectionParsingPropertyObject
  204.                             ConnectionPropertiesObject
  205.                             FullUDLFileName
  206.                             IsUDL
  207.                             ReturnValue
  208.                             TempObject
  209.                            )
  210.     (setq ADOLISP_ErrorList nil)
  211.     (SETQ ADOLISP_LastSQLStatement nil)
  212.     (progn
  213.       (setq ConnectionObject
  214.              (vlax-create-object "ADODB.Connection")
  215.       )
  216.       (if (vl-catch-all-error-p
  217.             (setq TempObject
  218.                    (vl-catch-all-apply
  219.                      'vlax-invoke-method
  220.                      (list
  221.                        ConnectionObject
  222.                        "Open"
  223.                        ConnectString
  224.                        UserName
  225.                        Password
  226.                        ADOConstant-adConnectUnspecified
  227.                       )
  228.                    )
  229.             )
  230.           )
  231.         (progn
  232.           (setq        ADOLISP_ErrorList
  233.                  ($ADO_ErrorProcessor$ TempObject ConnectionObject)
  234.           )
  235.           (print "开启数据库失败")
  236.           (mapcar 'print ADOLISP_ErrorList)
  237.           (and ConnectionObject
  238.                (vlax-release-object ConnectionObject)
  239.           )
  240.         )
  241.         (setq ReturnValue ConnectionObject)
  242.       )
  243.     )
  244.     (if        ReturnValue
  245.       (progn
  246.         (if (not ADOLISP_DoNotForceJetODBCParsing)
  247.           (progn
  248.             (setq ConnectionPropertiesObject
  249.                    (vl-catch-all-apply
  250.                      'vlax-get-property
  251.                      (list ReturnValue
  252.                            "Properties"
  253.                      )
  254.                    )
  255.             )
  256.             (if        (not (vl-catch-all-error-p
  257.                        (setq ConnectionParsingPropertyObject
  258.                               (vl-catch-all-apply
  259.                                 'vlax-get-property
  260.                                 (list
  261.                                   ConnectionPropertiesObject
  262.                                   "ITEM"
  263.                                   "Jet OLEDB:ODBC Parsing"
  264.                                 )
  265.                               )
  266.                        )
  267.                      )
  268.                 )
  269.               (vl-catch-all-apply
  270.                 'vlax-put-property
  271.                 (list ConnectionParsingPropertyObject
  272.                       "VALUE"
  273.                       :vlax-true
  274.                 )
  275.               )
  276.             )
  277.           )
  278.         )
  279.         (if (= 'VLA-OBJECT (type ConnectionParsingPropertyObject))
  280.           (and ConnectionParsingPropertyObject
  281.                (vlax-release-object ConnectionParsingPropertyObject)
  282.           )
  283.         )
  284.         (if (= 'VLA-OBJECT (type ConnectionPropertiesObject))
  285.           (and ConnectionPropertiesObject
  286.                (vlax-release-object ConnectionPropertiesObject)
  287.           )
  288.         )
  289.       )
  290.     )
  291.     ReturnValue
  292.   )
  293.   (defun $TRANSACTION$ (ConnectionObject    RecordSetObject
  294.                         SQLStatement            /
  295.                         BEGIN_TRANSACTION   TempObject
  296.                         END_TRANSACTION
  297.                        )
  298.                                         ;事务法提交
  299.     (if        (and SQLStatement (= (type SQLStatement) 'list))
  300.       (progn
  301.         (setq BEGIN_TRANSACTION
  302.                (vl-catch-all-apply
  303.                  'vlax-invoke-method
  304.                  (list RecordSetObject            "Open"
  305.                        "BEGIN TRANSACTION"  ConnectionObject
  306.                        nil                    nil
  307.                        ADOConstant-adCmdText
  308.                       )
  309.                )
  310.         )
  311.         (if (not (vl-catch-all-error-p BEGIN_TRANSACTION))
  312.           (progn
  313.             (setq TempObject
  314.                    (mapcar (function (lambda (sql)
  315.                                        (vl-catch-all-apply
  316.                                          'vlax-invoke-method
  317.                                          (list
  318.                                            RecordSetObject
  319.                                            "Open"
  320.                                            sql
  321.                                            ConnectionObject
  322.                                            nil
  323.                                            nil
  324.                                            ADOConstant-adCmdText
  325.                                           )
  326.                                        )
  327.                                      )
  328.                            )
  329.                            SQLStatement
  330.                    )
  331.             )
  332.           )
  333.         )
  334.         (vl-catch-all-error-p
  335.           (setq        END_TRANSACTION
  336.                  (vl-catch-all-apply
  337.                    'vlax-invoke-method
  338.                    (list RecordSetObject     "Open"
  339.                          "END TRANSACTION"   ConnectionObject
  340.                          nil                     nil
  341.                          ADOConstant-adCmdText
  342.                         )
  343.                  )
  344.           )
  345.         )
  346.       )
  347.     )
  348.     TempObject
  349.   )
  350.   (if $jz->db$
  351.     ()
  352.     (alert "缺少  $jz->db$  函数")
  353.   )
  354.   (if (and lst
  355.            (setq db-path (cdr (assoc "数据库路径" lst)))
  356.            (vl-filename-extension db-path)
  357.       )
  358.     (progn
  359.       (IF (NOT (findfile db-path))        ;没有找到数据库
  360.         (vl-catch-all-apply
  361.           'close
  362.           (list (vl-catch-all-apply 'open (list db-path "w")))
  363.         )                                ;创建一个空的数据库
  364.       )
  365.       (if (findfile db-path)
  366.         (progn
  367.           (if (and db-path
  368.                    (setq ConnectionObject
  369.                           ($ADO_ConnectToDB$
  370.                             (strcat "Driver={SQLite3 ODBC Driver}; Database="
  371.                                     db-path
  372.                             )
  373.                             ""
  374.                             ""
  375.                           )
  376.                    )
  377.               )
  378.             (progn
  379.               (if
  380.                 (and lst
  381.                      (setq SQLStatement (cdr (assoc "SQL语句" lst)))
  382.                      (= (type SQLStatement) 'list)
  383.                                         ;sql语句必须是list格式的
  384.                 )
  385.                  (progn
  386.                    (IF
  387.                      (vl-some
  388.                        (function
  389.                          (lambda (sql)
  390.                            (AND        sql
  391.                                 (= (TYPE SQL) 'STR)
  392.                                 (WCMATCH (strcase sql) "[,*IS NOT NULL,]")
  393.                            )
  394.                          )
  395.                        )
  396.                        SQLStatement
  397.                      )
  398.                       (PRINT
  399.                         "SQL statement has “IS NOT NULL”, Data volume large Of time Hou Probably cause Access conflict"
  400.                       )
  401.                    )
  402.                    (setq ADOLISP_ErrorList nil)
  403.                    (setq ADOLISP_LastSQLStatement SQLStatement)
  404.                    (setq ADOLISP_FieldsPropertiesList nil)
  405.                    (setq RecordSetObject
  406.                           (vl-catch-all-apply
  407.                             'vlax-create-object
  408.                             (list "ADODB.RecordSet")
  409.                           )
  410.                    )
  411.                    (if (not (vl-catch-all-error-p RecordSetObject))
  412.                      (progn
  413.                        (vl-catch-all-apply
  414.                          'vlax-put-property
  415.                          (list RecordSetObject
  416.                                "cursorType"
  417.                                3
  418.                          )
  419.                        )
  420.                        (vl-catch-all-apply
  421.                          'vlax-put-property
  422.                          (list RecordSetObject
  423.                                "LockType"
  424.                                3
  425.                          )
  426.                        )
  427.                        (if (= (cdr (assoc "启用事务" lst)) "是")
  428.                                         ;只有:DML、INSERT、UPDATE、DELETE支持事务提交,上级调用的时候注意一下
  429.                          (progn
  430.                            (if (and (setq TempObjects
  431.                                            ($TRANSACTION$
  432.                                              ConnectionObject
  433.                                              RecordSetObject
  434.                                              SQLStatement
  435.                                            )
  436.                                     )
  437.                                     (setq TempObjects
  438.                                            (vl-remove nil TempObjects)
  439.                                     )
  440.                                )
  441.                              (if
  442.                                (vl-some
  443.                                  (function
  444.                                    (lambda (a) (vl-catch-all-error-p a))
  445.                                  )
  446.                                  TempObjects
  447.                                )
  448.                                 (progn
  449.                                   (setq        ADOLISP_ErrorList
  450.                                          (mapcar
  451.                                            (function (lambda (a)
  452.                                                        ($ADO_ErrorProcessor$
  453.                                                          a
  454.                                                          ConnectionObject
  455.                                                        )
  456.                                                      )
  457.                                            )
  458.                                            TempObjects
  459.                                          )
  460.                                   )
  461.                                   (setq IsError T)
  462.                                   (setq ReturnValue nil)
  463.                                   (and
  464.                                     RecordSetObject
  465.                                     (vlax-release-object RecordSetObject)
  466.                                   )
  467.                                 )
  468.                                 (progn (setq RecordsAffected T)
  469.                                        (setq ReturnValue t)
  470.                                 )
  471.                              )
  472.                            )
  473.                          )
  474.                                         ;事务法提交sql
  475.                          (PROGN
  476.                            (SETQ TempObjectS
  477.                                   (MAPCAR (FUNCTION
  478.                                             (LAMBDA (SQL)
  479.                                               (vl-catch-all-apply
  480.                                                 'vlax-invoke-method
  481.                                                 (list
  482.                                                   RecordSetObject
  483.                                                   "Open"
  484.                                                   SQL
  485.                                                   ConnectionObject
  486.                                                   nil
  487.                                                   nil
  488.                                                   ADOConstant-adCmdText
  489.                                                  )
  490.                                               )
  491.                                             )
  492.                                           )
  493.                                           SQLStatement
  494.                                   )
  495.                            )
  496.                            (if (vl-some
  497.                                  (function
  498.                                    (lambda (a) (vl-catch-all-error-p a))
  499.                                  )
  500.                                  TempObjectS
  501.                                )
  502.                              (progn
  503.                                (setq ADOLISP_ErrorList
  504.                                       (mapcar
  505.                                         (function (lambda (a)
  506.                                                     ($ADO_ErrorProcessor$
  507.                                                       a
  508.                                                       ConnectionObject
  509.                                                     )
  510.                                                   )
  511.                                         )
  512.                                         (VL-REMOVE NIL TempObjects)
  513.                                       )
  514.                                )
  515.                                (setq IsError T)
  516.                                (and RecordSetObject
  517.                                     (vlax-release-object RecordSetObject)
  518.                                )
  519.                              )
  520.                              (setq RecordsAffected T)
  521.                            )
  522.                          )
  523.                        )
  524.                        (if (= (cdr (assoc "启用事务" lst)) "是")
  525.                          (progn
  526.                            (vl-catch-all-apply
  527.                              'vlax-invoke-method
  528.                              (list RecordSetObject "Close")
  529.                            )
  530.                            (vl-catch-all-apply
  531.                              'vlax-release-object
  532.                              (list RecordSetObject)
  533.                            )
  534.                          )                ;启用事务法
  535.                          (if (not IsError)
  536.                            (if (= (vl-catch-all-apply
  537.                                     'vlax-get-property
  538.                                     (list RecordsetObject "State")
  539.                                   )
  540.                                   0        ;如果连接已经关闭
  541.                                )
  542.                              (progn
  543.                                (setq ReturnValue RecordsAffected)
  544.                                (and RecordSetObject
  545.                                     (vlax-release-object RecordSetObject)
  546.                                )
  547.                              )
  548.                              (progn
  549.                                (setq FieldsObject
  550.                                       (vl-catch-all-apply
  551.                                         'vlax-get-property
  552.                                         (list RecordSetObject
  553.                                               "Fields"
  554.                                         )
  555.                                       )
  556.                                )
  557.                                (setq FieldCount
  558.                                       (vl-catch-all-apply
  559.                                         'vlax-get-property
  560.                                         (list FieldsObject "Count")
  561.                                       )
  562.                                )
  563.                                (setq FieldNumber -1)
  564.                                (while
  565.                                  (> FieldCount
  566.                                     (setq FieldNumber (1+ FieldNumber))
  567.                                  )
  568.                                   (setq        FieldItem (vlax-get-property
  569.                                                     FieldsObject
  570.                                                     "Item"
  571.                                                     FieldNumber
  572.                                                   )
  573.                                   )
  574.                                   (setq
  575.                                     FieldName (vlax-get-property
  576.                                                 FieldItem
  577.                                                 "Name"
  578.                                               )
  579.                                   )
  580.                                   (setq
  581.                                     FieldList (cons FieldName FieldList)
  582.                                   )
  583.                                   (setq FieldPropertiesList nil)
  584.                                   (foreach FieldProperty '("Type"
  585.                                                            "Precision"
  586.                                                            "NumericScale"
  587.                                                            "DefinedSize"
  588.                                                            "Attributes")
  589.                                     (setq FieldPropertiesList
  590.                                            (cons (cons FieldProperty
  591.                                                        (vlax-get-property
  592.                                                          FieldItem
  593.                                                          FieldProperty
  594.                                                        )
  595.                                                  )
  596.                                                  FieldPropertiesList
  597.                                            )
  598.                                     )
  599.                                   )
  600.                                   (setq        ADOLISP_FieldsPropertiesList
  601.                                          (cons
  602.                                            (cons FieldName
  603.                                                  FieldPropertiesList
  604.                                            )
  605.                                            ADOLISP_FieldsPropertiesList
  606.                                          )
  607.                                   )
  608.                                )
  609.                                (setq ADOLISP_FieldsPropertiesList
  610.                                       (reverse
  611.                                         ADOLISP_FieldsPropertiesList
  612.                                       )
  613.                                )
  614.                                (setq ReturnValue
  615.                                       (list (reverse FieldList))
  616.                                )
  617.                                (if
  618.                                  (not
  619.                                    (and        (= :vlax-true
  620.                                            (vl-catch-all-apply
  621.                                              'vlax-get-property
  622.                                              (list RecordSetObject
  623.                                                    "BOF"
  624.                                              )
  625.                                            )
  626.                                         )
  627.                                         (= :vlax-true
  628.                                            (vl-catch-all-apply
  629.                                              'vlax-get-property
  630.                                              (list RecordSetObject
  631.                                                    "EOF"
  632.                                              )
  633.                                            )
  634.                                         )
  635.                                    )
  636.                                  )
  637.                                   (progn
  638.                                     (setq safearray->list
  639.                                            (vl-catch-all-apply
  640.                                              'vlax-safearray->list
  641.                                              (list
  642.                                                (vl-catch-all-apply
  643.                                                  'vlax-variant-value
  644.                                                  (list
  645.                                                    (vl-catch-all-apply
  646.                                                      'vlax-invoke-method
  647.                                                      (list
  648.                                                        RecordSetObject
  649.                                                        "GetRows"
  650.                                                        ADOConstant-adGetRowsRest
  651.                                                      )
  652.                                                    )
  653.                                                  )
  654.                                                )
  655.                                              )
  656.                                            )
  657.                                     )
  658.                                     (if
  659.                                       (not
  660.                                         (vl-catch-all-error-p
  661.                                           safearray->list
  662.                                         )
  663.                                       )
  664.                                        (setq
  665.                                          ReturnValue
  666.                                           (append
  667.                                             (list (reverse FieldList))
  668.                                             (apply
  669.                                               'mapcar
  670.                                               (cons
  671.                                                 'list
  672.                                                 (mapcar
  673.                                                   '(lambda (InputList)
  674.                                                      (mapcar
  675.                                                        '(lambda        (Item)
  676.                                                           (vl-catch-all-apply
  677.                                                             'vlax-variant-value
  678.                                                             (list Item)
  679.                                                           )
  680.                                                         )
  681.                                                        InputList
  682.                                                      )
  683.                                                    )
  684.                                                   safearray->list
  685.                                                 )
  686.                                               )
  687.                                             )
  688.                                           )
  689.                                        )
  690.                                     )
  691.                                   )
  692.                                )
  693.                                (vl-catch-all-apply
  694.                                  'vlax-invoke-method
  695.                                  (list RecordSetObject "Close")
  696.                                )
  697.                                (vl-catch-all-apply
  698.                                  'vlax-release-object
  699.                                  (list RecordSetObject)
  700.                                )
  701.                              )
  702.                            )
  703.                          )
  704.                        )
  705.                      )
  706.                      (progn (print "调用 ADODB.RecordSet 对象失败") nil)
  707.                    )
  708.                  )
  709.                  (progn (print "未传入Sql语句") nil)
  710.               )
  711.               (vl-catch-all-apply
  712.                 'vlax-invoke-method
  713.                 (list
  714.                   ConnectionObject
  715.                   "CommitTrans"
  716.                 )
  717.               )
  718.               (vl-catch-all-apply
  719.                 'vlax-invoke-method
  720.                 (list
  721.                   ConnectionObject
  722.                   "close"
  723.                 )
  724.               )                                ;关闭链接
  725.               (vl-catch-all-apply
  726.                 'vlax-release-object
  727.                 (list ConnectionObject)
  728.               )
  729.             )
  730.             (progn (alert "调用Ado组件失败")
  731.                    (if $install-ADO$
  732.                      ($install-ADO$)
  733.                    )
  734.                    nil
  735.             )
  736.           )
  737.           (cond
  738.             ((AND LST
  739.                   ReturnValue
  740.                   (= (type ReturnValue) 'list)
  741.                   (assoc "返回数据格式" lst)
  742.                   (wcmatch (cdr (assoc "返回数据格式" lst)) "[,db,DB,]")
  743.              )
  744.              (setq ReturnValue ($jz->db$ ReturnValue))
  745.             )
  746.             ((AND LST
  747.                   ReturnValue
  748.                   (= (type ReturnValue) 'list)
  749.                   (assoc "返回数据格式" lst)
  750.                   (wcmatch (cdr (assoc "返回数据格式" lst)) "[,jz,JZ,]")
  751.              )
  752.              t                                ;矩阵模式不用处理
  753.             )
  754.             (t nil)
  755.           )
  756.         )
  757.         (progn (print "数据库找不到") nil)
  758.       )
  759.     )
  760.     (progn (print "未传入db库路径不合法,必须包含“.db”后缀")
  761.            nil
  762.     )
  763.   )
  764.   ReturnValue
  765. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2020-2-3 00:03:20 | 显示全部楼层
  1. ($DO-SQL-sqlite-ado$
  2.   (list
  3.     (cons "数据库路径" "c:\\Sqlite\\data.db")
  4.     (cons "SQL语句" (list "SELECT name FROM sqlite_master WHERE type= 'table' ORDER BY name"))
  5.     (cons "返回数据格式" "db")
  6.     (cons "启用事务" "否")
  7.   )
  8. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2020-8-11 16:02 , Processed in 0.074357 second(s), 29 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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