http://www.weistock.com/BBS/dispbbs.asp?BoardID=5&ID=401&replyID=&skin=1
利用数据库扩充金字塔的数据存放及分析能力
版主在上帖中给了一个从ACCESS数据库中读取数据,并导入到技术指标的例子。
//连接d:\test.mdb数据库
DATABASE('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.mdb');
但我用的是MYSQL数据库,不知道如何建立连接。
假设在MYSQL数据库中表的字段名和ACCESS中的表字段名一致。版主能否给个例子,说明如何和MYSQL建立连接。
刚在网上搜了一下DATABASE连接数据库的函数。根据下面的方法应该能搞定。
不通过DSN对SQL SERVER数据库进行连接。
DATABASE('driver={SQL Server};Server=127.0.0.1;DATABASE=test;UID=sa;PWD=1234'),其中Server是127.0.0.1服务器的名称或IP地址,test是数据库的名称。
连接MYSQL数据库
ADO连接MYSQL非常的麻烦,如果有可能更换数据库,还是建义更换SQL SERVER
ADO连接MySQL(2007-12-28 15:25:46)
<!-- 正文开始 -->Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 3.51 Driver]
"UsageCount"=dword:00000001
"Driver"="C:\\WINDOWS\\system32\\myodbc3.dll"
"Setup"="C:\\WINDOWS\\system32\\myodbc3S.dll"
在安装MySql后只有一个超级管理权限的用户ROOT,而且ROOT限制只能在数据库本机上使用,如果我们要远程管理MySql咋办呢?那么事实上我们需要添加一个具有超级管理权限并且可能远程访问的超级用户,而在MySql中有两种方法可以实现这个目的,我们以增加一个超级权限管理用户 admin为例来说明。
你可以通过发出GRANT语句增加新用户:首先在数据库本机上用ROOT用户登录上MySql(不用我告诉你如何登录吧?),然后:
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
第一句增加了一个admin用户授权通过本地机(localhost)访问,密码“something”。第二句则是授与admin用户从任何其它主机发起的访问(通配符%)。
你也可以直接通过发出INSERT语句增加同样的用户存取信息:
mysql>INSERT INTO user VALUES('localhost','admin',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql>INSERT INTO user VALUES('%','admin',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
取决于你的MySQL版本,对上述,你可能必须使用一个不同数目'Y'值(在3.22.11以前的版本有更少的权限列)。
验证方法,在命令行中输入:mysql -h主机名或IP地址 -u用户名 -p密码
按上述方法试了下,报错了,提示“找不到可安装的isam 数据库”
我按照下面的方法,找到了连接MYSQL的ADO字符串,并显示连接成功。
具体的ADO字符串为:Driver=MySQL ODBC 5.1 Driver;SERVER=127.0.0.1;UID=root;PWD=123;DATABASE=mytest;PORT=3306
其中数据库mytest下的表的设置和论坛给的ACCESS数据库中的表设置一样,如表名为SH600000或ZJIF00,字段名为stockdate和stockclose。
http://blog.csdn.net/zyq5945/archive/2010/04/14/5486393.aspx
自己如何正确获取MYSQL的ADO连接字符串
但我在技术指标中,使用下列代码时,没有报错。但却读不出数据库中的数据,显示cc:0。
DATABASE('Driver=MySQL ODBC 5.1 Driver;SERVER=127.0.0.1;UID=root;PWD=123;DATABASE=mytest;PORT=3306;');
DBTABLE('Select * From @Code@ Order By StockDate');
cc:DBVALUE('STOCKCLOSE');
请版主帮忙看一下。
另外,我发现你们提供的DSN连接数据库的方式也有些问题。
比如我做如下设置,在控制面板/管理工具/数据源ODBC/系统DSN/添加/Miscrosoft Access Driver (*.mdb)/完成,接着数据源名输入:testaccess,数据库/
选择 d:\test.mdb 确定后,在“系统数据源”下会出现testaccess数据源名称。这里的test.mdb就是论坛上给出的那个SH600000的ACCESS数据库。
以下为技术指标公式源码。
DATABASE('Data Source=testaccess;');
DBTABLE('Select * From @Code@ Order By StockDate');
cc:DBVALUE('STOCKCLOSE');
运行后报错:找不到'D:\Weisoft Stock\testaccess'
请版主一并看看原因,也希望金字塔与数据库交互的功能能够逐渐完善。
从金字塔读MYSQL数据已搞定,上述代码没有问题,关键是在数据中的字段stockclose属性要设成浮点double类型。