几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » 数据库ObjectDBX
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-19, 05:23 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】[求助]如何嵌入sql

[求助]如何嵌入sql
www.dimcax.com
[求助]如何嵌入sql那为高手告知如何在lisp中嵌入sql语句。还是根本就不可能,只能在vb 与 c++
在c++中怎样嵌入。与c一样吗? exec sql 吗?
lisp我想应该不行的,因为他不支持activex,但vlisp是可以的,下面是我以前写得一个程序,当时测试过了的,
;;;下面的这个函数是用来加载ado库的函数,已经测试成功
(vl-load-com)
(defun ado:initado (/ adopath)
(if (null adom-append)
(progn
(setq
adopath (strcat (getenv "systemdrive")
"\\program files\\common files\\system\\ado\\"
)
)
(if (findfile (strcat adopath "msado15.dll"))
(vlax-import-type-library
:tlb-filename
(strcat adopath "msado15.dll")
:methods-prefix
"adom-"
roperties-prefix
"adop-"
:constants-prefix
"adoc-"
)
(alert "没有在指定的路径发现ado库文件")
)
)
)
)
;;;下面这个函数是一个用来执行查询命令的函数,接受一个字符串(sql查询语)
;;;然后返回一个记录集,如果是修改查询的话,则返回t
(defun ado:execute_sql (sqltxt tag /
connect_obj connect_str recordset
affectlines repeat_num dispstr
thereturn
)
(setq connect_obj (vlax-create-object "adodb.connection"))
(setq connect_str "dsn=northwind_test;uid=sa;pwd=800513")
(adop-put-connectiontimeout connect_obj 40)
(adom-open connect_obj connect_str
"sa" "noguess"
adoc-adconnectunspecified
)
(if tag
(progn
(setq recordset (vlax-create-object "adodb.recordset"))
(adom-open recordset sqltxt
connect_obj adoc-adopenkeyset
adoc-adlockoptimistic
-1
)
(setq thereturn recordset)
)
(progn
(adom-execute connect_obj sqltxt affectedlines adoc-adcmdunknown)
(setq thereturn t)
)
)
(setq thereturn thereturn)
)
;;;下面的函数是主函数,其中引用了前面声明的函数
;;;函数的功能是将一个dwg文件中的所有具有 "house"
;;;扩展应用程序名的实体中的扩展数据入库道sql数据库中,
;;;这个例子的表中就有两个字段"type"和"area".
(defun ado:input_database(/ ss ss_len xdata_list repeatnum j i area htype)
(ado:initado)
(setq ss (ssget "x" '((-3 ("house")))))
(setq ss_len (sslength ss) i 0)
(repeat ss_len
(setq xdata_list (cdr(assoc '-3 (entget (ssname ss i) '("house")))))
(setq repeatnum (length xdata_list) j 0)
(repeat repeatnum
(if (= (car (nth j xdata_list)) "house")
(progn
(setq area (cdr (assoc '1040 (cdr(nth j xdata_list)))))
(setq htype (cdr (assoc '1000 (cdr(nth j xdata_list)))))
)
)
(setq j (1+ j))
)
(ado:execute_sql (strcat "insert into house_info (type,area) values ('" htype "'," (rtos area 2 2) ")") nil)
(setq i (1+ i))
)
(alert "房屋扩展数据入库成功")
)
;;;这个函数是用来显示数据库中的相关房子的信息,当数据库信息保存道一定的量,
;;;可以用vlisp程序来根据信息出dwg图形,其实,dwg文件就是一个数据库,稍微知道
;;;一点arx的就可以知道,看看版主leeyeafu写的连载一吧,前面的部分可能会让
;;;你豁然开朗.
(defun ado:disp_database(/ recordset repeat_num dispstr )
(setq recordset (ado:execute_sql "select * from house_info order by right(type,4)" t))
(setq repeat_num (adop-get-recordcount recordset))
(setq dispstr "")
(repeat repeat_num
(setq
dispstr
(strcat
dispstr
"\n"
(vlax-variant-value(adop-get-value (adop-get-item (adop-get-fields recordset) "type"))) "\t"
(rtos (vlax-variant-value(adop-get-value (adop-get-item (adop-get-fields recordset) "area"))) 2 2)
)
)
(if (/= (adop-get-eof recordset) t)
(adom-movenext recordset)
)
)
(alert dispstr)
)
相关说明:
程序中所建立的表house_info放在数据库northwind数据库中
请自己创建一个odbc连接,能顺利连接到northwind数据库就可以了,
只恨相识太晚
【好评】好程序 积分+1 金钱+2 经验+1 魅力+2 [leeyeafu |
非常感谢您的指点
(adom-open connect_obj connect_str
"sa" "noguess"
adoc-adconnectunspecified
)
运行到这句时出现; 错误: automation 错误。 操作已被取消。请问是什么问题?
海到无边天作岸;山登绝顶我为峰
我的msn: njcknfy@hotmail.com
qq: 545133916
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 10:51 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多