以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  分享狐表连接mysql数据库  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=143043)

--  作者:z769036165
--  发布时间:2019/11/12 13:21:00
--  分享狐表连接mysql数据库
此方式可以将mysql数据表在狐表中以DataTables表显示,但对于数据量较多的表其效率比
方式直接连接低,大家可根据需求选择。

具体方式:

1、在SQL SERVER服务器上安装MYSQL ODBC驱动;


驱动下载地址:链接:https://pan.baidu.com/s/1x7VMDZFcBfrjXzIepVW4IQ 提取码:21gj (mysql-connector-odbc-5.3.4-winx64.msi为64位版本,其他版本自行百度下载)



2、安装好后,在管理工具-ODBC数据源-系统DSN-添加-选择 MYSQL ODBC 5.3 Unicode DRIVER-完成 



会跳出来MYSQL连接参数


Data Source Name:数据源名称


Decription:描述,随便写


Server:MYSQL服务器的IP


Port:MYSQL的端口,默认的是3306.可以改的.


User:连接账号(在mysql上授权的账号,同时给予相应权限)


Password:密码


Database:选择链接的数据库



此主题相关图片如下:1.jpg
按此在新窗口浏览图片


填好之后,点下test.成功了则会如图跳出提示框. Connection Successful


3,打开SQL数据库,在服务器对象,找到链接服务器.创建链接服务器,


在常规选项中


链接服务器:MYSQL_DBLINK


服务器类型:其他数据源


提供程序:“Microsoft OLE DB Provider for ODBC Drivers”


产品名称:MYSQL_DBLINK


数据源:mydb   (选择之前已创建好的ODBC接口数据源的名称)


其他的就不用填了


这里,需要注意:访问接口要选择“Microsoft OLE DB Provider for ODBC Drivers”。


然后在安全性中 选择使用此安全上下文创建连接 填写MYSQL 数据库的登陆名和密码



此主题相关图片如下:3.jpg
按此在新窗口浏览图片

4、sql 语句使用


复制代码 


-查询 

S elect * FROM OPENQUERY(MYSQL_DBLINK, \'s elect * from tableName where id="1"\')


-修改 

U PDATE OPENQUERY(MYSQL_DBLINK, \'s elect * from tableName where id="1"\') set cname=\'测试\' 

-O r 

U PDATE OPENQUERY(MYSQL_DBLINK, \'s elect * from tableName \') set cname=\'测试\' where id=1


-添加 

I NSERT INTO OPENQUERY(MYSQL_DBLINK, \'s elect * from tableName where 1=0\')values (\'xx\',\'xx\',\'xx\');


-删除 

D ELETE FROM OPENQUERY(MYSQL_DBLINK, \'s elect * from tableName where id="1"\')


**【注意】在查询的时候如果出现: 链接服务器 ‘MYSQL_DBLINK’ 的 OLE DB 访问接口 ‘MSDASQL’ 返回了对列 ‘[MSDASQL].cname’ 无效的数据


需要在MYSQL ODBC数据源上设置符合你的编码格式,如图:



此主题相关图片如下:2.jpg
按此在新窗口浏览图片


5、OPENQUERY用法 


对给定的链接服务器执行指定的传递查询。该服务器是 OLE DB 数据源。OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名。OPENQUERY 也可以作为 I NSERT、U PDATE 或 D ELETE 语句的目标表进行引用。但这要取决于 OLE DB 访问接口的功能。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。


Transact-SQL 语法约定


语法

OPENQUERY ( linked_server ,’query’ ) 


参数

linked_server 
表示链接服务器名称的标识符。

’ query ’ 
在链接服务器中执行的查询字符串。该字符串的最大长度为 8 KB。


备注

OPENQUERY 不接受其参数的变量。

在 SQL Server 2000 和更高版本中,OPENQUERY 不能用于对链接服务器执行扩展存储过程。但是,通过使用四部分名称,可以在链接服务器上执行扩展存储过程。例如:

E XEC SeattleSales.master.dbo.xp_msver


权限

任何用户都可以执行 OPENQUERY。用于连接到远程服务器的权限是从为链接服务器定义的设置中获取的。


狐表连接


以下内容只有回复后才可以浏览


[此贴子已经被作者于2019/11/12 13:23:18编辑过]

--  作者:有点蓝
--  发布时间:2019/11/12 14:20:00
--  
多谢分享
--  作者:blackzhu
--  发布时间:2019/11/12 14:32:00
--  
看看
--  作者:blackzhu
--  发布时间:2019/11/12 15:06:00
--  
你这个测试成功了吗,要不要设置数据源的?  我测试报错

Tables(e.form.Name & "_Table1").fill("Sel    ect * FROM OPENQUERY(MYSQL_DBLINK, \'sele t * from actlist\')",False)

FROM 子句语法错误。

--  作者:blackzhu
--  发布时间:2019/11/12 15:14:00
--  
可以了,先要做个数据源. 测试了下 1000条数据在sql查询有点延迟,但是狐表秒开
--  作者:z769036165
--  发布时间:2019/11/12 16:03:00
--  
这个第一次获取数据慢一些,第二次开始就都很快了,不知道第一次怎么可以很快加载
--  作者:teng0731
--  发布时间:2019/11/12 16:09:00
--  
 看看
--  作者:xunxun0903
--  发布时间:2019/11/15 16:49:00
--  
 看看

--  作者:y2287958
--  发布时间:2019/11/15 16:59:00
--  
好东西,官方也要考虑一下大家折腾的成本了
--  作者:bohe
--  发布时间:2019/11/15 21:17:00
--  
kankan