mql4链接mysql报错,显示无法调用mysql链接的函数?

mql4链接mysql报错,显示无法调用mysql链接的函数?,第1张

MQL 与数据库的交互问题并非新事物,但它们依然是相关的。利用数据库​​可以极大增强 MetaTrader 的可塑性: 存储并分析价格历史,从一个交易平台拷贝交易至另一个平台,提供实时报价/交易,在服务器端定期进行深度分析计算,使用 web 技术监视并远程控制账户。

总之,有许多种应用尝试从 MQL 和 MySQL 的组合之中获益,一些方案已经在代码库里出现。

例如 "MySQL 包装 - 用于 MetaTrader 4 的链接库" 就是这样的项目,许多程序员开始自己开发,在将来还可扩充。我认为,这种解决方案的缺点之一是分配特殊数组用来从数据库中读数据。

另一个项目 "MySQL 日志 1 - 用于 MetaTrader 4 的 EA" 更加专业,它不使用包装来访问标准链接库 libmysql.dll。因此,它不能在 MetaTrader4 编译版 600+ 上工作,由于 char 字符类型已经被 wchar_t 替代,且使用 int 类型替代了 TMYSQL 结构指针,导致在项目中产生内存泄漏 (内存分配不能控制/释放)。

另一个有趣的项目是 "EAX_Mysql - MySQL 链接库 - 用于 MetaTrader 5 的链接库"。它是十分出色的实现。不过作者列出了一些缺点,在使用时有强制限制。

任何人若需要在他们的项目中使用数据库,有两个选项: 要么开发自己的解决方案,并了解它的每一个部分,或者使用/改编任何第三方解决方案,了解如何使用它们并检测是否会阻碍他们的项目。

在我开发一个相当复杂的自动交易时,就要面对这样的必要性和两个选项。依照现有项目经过搜索,且研究了很多的解决方案后,我意识到,已发现的实施方案均无助于把我的自动交易提升到“专业水平”。

此外,也有些荒谬的方案,例如: 使用标准 libmysql.dll 执行 DML/DDL *** 作 (插入/更新/删除数据, 在数据库中创建/废弃对象), 以及将数据检索 (SELECT) 的实现作为 HTTP 请求 (使用 inet.dll) 与 MySQL 服务器端的 web 服务器上的 PHP 脚本通信。而 SQL 查询被写在 PHP 脚本中。

换句话说,要运行该项目,一定需要保证下述所有部件准备妥当,配置好并运行:MySQL 服务器,Apache/ IIS Web 服务器,在服务器端的 PHP/ASP 脚本... 大量技术的组合。当然,在某些情况下,这是可以接受的,但当唯一的任务就是从数据库中查询数据 - 那么这些全无意义。此外,支持如此累赘的方案也耗费时间。

大部分的方案在插入数据,创建对象等等 *** 作时没有问题。问题在于数据查询,因为数据将会被返回调用环境。

我认为出于此目的而使用数组是不切实际的和不方便的,简单的原因就是在主程序的开发/调试/支持过程中,数据库查询是可以变化的,而您也要正确控制为数组分配的内存.. 那么,这些可以,而且必须要避免。

下文讨论的 MQL <->MySql 的接口基于 Oracle PL/SQL, MS SQL T-SQL, AdoDB 等产品内使用的典型方式- 使用游标。这个接口的开发目标是易于编程和维护,再加上最少元部件。它作为 DLL 包装器实现,连接标准链接库 libmysql.dll,且接口函数集合作为一个 .mqh 文件。

当然可以了。

一.为 MySQL安装ODBC驱动

下载MySQL ODBC Connector,

从控制面板-管理工具,打开你的 数据源(ODBC),选 系统DNS ,点添加。    

在 创建新数据源对话框中,选择MySQL ODBC 5.1 Driver ,点完成。

完成后会出现MySQL 链接对话框,添加你的 MySQL 数据库账号信息,并确认"root"账号是否有全部的权限,如果你安装MySQL 没有修改的话, 不要改 3306这个端口号。

点“测试”按钮确认你的链接是正确的。 Press the "Test" button to ensure your connection settings are set properly and then the "OK" button when you're done.

二. 创建Microsoft SQL到MySQL的链接

1.在SQL Server Management Studio中打开一个new query 拷贝一下语句,修改为你的数据库的名称,并运行。 EXEC master.dbo.sp_addlinkedserver  @server = N'MYSQL',  @srvproduct=N'MySQL',  @provider=N'MSDASQL',  @provstr=N'DRIVER={MySQL ODBC 5.1 Driver}SERVER=localhost_  DATABASE=tigerdbUSER=rootPASSWORD=hejsanOPTION=3'

2.这个脚本通过ODBC驱动创建一个联接到你的MySQL数据库,这个联接出现在Microsoft SQL Server Management Studio如下图:  没有出现这个图,就刷新下。

三. 在两个数据库之间导数据

在Microsoft SQL Server中创建个新的数据库(如:testMySQl),在new query中拷贝如下语句,运行后就可以把MySQL 数据库 “tigerdb” 导入到 Microsoft SQL 数据库“testMySQl”中。  

SELECT * INTO testMySQL.dbo.shoutbox FROM openquery(MYSQL, 'SELECT * FROM tigerdb.shoutbox')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7508932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存