|||
一直想通过matlab对mysql数据库进行读写,尝试了几种方法。
第一步,mysql的安装与配置。结果:OK。
当前电脑是window8的64位操作系统,在mysql的网站 http://dev.mysql.com/downloads/windows/installer/ 下载了 mysql-installer-web-community-5.6.26.0.msi 进行安装。安装的过程很顺利,配置的过程中会卡死在starting service那一步。网上很多用户也有这个问题,据说是因为没有用管理员权限运行安装程序。自己卸载重装也没有解决,最终参考 http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html 完成。主要操作有:
(1)设置环境变量
(2)修改my.ini
basedir=C:Program FilesMySQLMySQL Server 5.6(mysql所在目录)
datadir=C:Program FilesMySQLMySQL Server 5.6data (mysql所在目录data)
(3)以管理员权限运行cmd,用cd转到mysql的bin目录下。输入mysqld -install。如果已安装会显示服务已存在。使用net start mysql启动mysql服务。如果不成功,输入mysqld -remove。然后再mysqld -install。然后再net start mysql。然后问题就解决了。
输入mysql -u root就可以进入数据库了。
mysql常用操作可参考w3school或一些网上资源:
http://www.360doc.com/content/12/0328/14/8354145_198595191.shtml
http://blog.csdn.net/ithomer/article/details/5131863
在安装完mysql后登入,给超级管理员root用户加上密码,设置允许远程访问,及简单的测试等。启动cmd,输入以下内容登录和操作。
>>mysql -u root
>>show databases;
>>use mysql;
>>show tables;
>>describe user;
>>select user,password,host from user where user='root';
>>update user set password='123456' where user='root';
>>update user set host='%' where user='root';
>>select user,password,host from user where user='root';
>>grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
>>flush privileges;
>>select user,password,host from user where user='root';
>>quit;
>>mysql -u root
>>mysql -u root -p
>>show databases;
当然各人有各人的配置过程和方法。有时配置会遇到一些问题。比如发现虽然设置了密码,但登录时不用密码也能登入,用密码反而不能登录。这时我去检查发现了3个root用户,分别对应了3个不同的host:'localhost'与'127.0.0.1'与'%'。删了前两个就OK了。
有时情况是登录后发现root用户没有管理员权限,不能看到mysql的库以及下面的表,也不能修改密码。是因为root用户多个host或没有设置好允许远程访问和权限的问题。这时以超级用户的方式进行修改和清理。以管理员权限运行cmd,如果没有设置环境变量使用cd转到mysql的bin目录,输入net stop mysql回车确保mysql没有在运行,输入mysqld --skip-grant-tables回车,在任务管理器中可以看到mysqld进程正在运行。这时命令行可能卡住,没问题,新开一个管理员权限的cmd,输入mysql -u root进入数据库,然后删除多余的root账户,并保证root账户的host为'%',设置密码,运行mysqladmin shutdown关闭当前mysqld进程。运行net start mysql启动服务,发现能用密码正常登陆入mysql,然后输入grant all privileges那句和flush那句就OK了。
至此,mysql的安装配置正常。
第二步,将matlab与mysql相连。结果:失败。原因:当前安装的matlab没有database的toolbox。
如果要将matlab与mysql相连,需要两方面内容,一是mysql的java驱动,二是修改matlab的配置文件。
在mysql的官网找到 http://dev.mysql.com/downloads/connector/j/ 下载 mysql-connector-java-gpl-5.1.36.msi。运行后在 C:Program Files (x86)MySQLConnector.J 5.1 找到了解压后的文件
需要将所有文件复制到matlab的java库中,路径 C:Program FilesMATLABR2014ajavajartoolbox
在路径C:Program FilesMATLABR2014atoolboxlocal下找到classpath.txt并将上面的java驱动路径+文件名加到后面。或者在matlab中运行edit classpath.txt直接修改。
然后运行matlab的database函数尝试连接,发现没有database这个命令,说明mysql的java驱动链接matlab不成功。
之后尝试了创建javaclasspath文件和自动添加path的方法,也没有成功,方法参见。
http://www.cnblogs.com/mathecoer/archive/2013/05/20/3089026.html
http://www.ilovematlab.cn/thread-259252-1-1.html
最终在页面https://www.mathworks.com/matlabcentral/newsreader/view_thread/292115找到答案。
在matlab命令行窗口运行ver发现并没有database的toolbox。由于当前安装的是学校购买的正版的matlab,工具箱仅有常用的几个,在matlab官网上查了下一个数据库的toolbox要几千块人民币,目前不考虑购买。工作环境又不适合装个破解版的matlab。
至此,matlab直接连接mysql任务失败。
由于matlab可以用urlread进行读取网页操作,并结合'post'参数可以提交表单。考虑也许可以使用http服务中转连接mysql。
第三步,搭建IIS服务器,配置asp的环境。结果:OK。
win8有自带的IIS组件,打开contro pannel中Programs and Features左侧的Turn windows feathers on or off,将internet information services选上,确定。安装完成中可以在 我的电脑>管理>服务 中找到IIS的站点,或者以管理员权限运行cmd,输入net start w3svc启动万维网服务,输入start inetmgr打开网站控制台。可以手动修改默认asp页面语言或在页面代码中注明使用的语言格式为VBscript还是Jscript。根据偏好进行各种目录权限配置。
除了使用win8自带的IIS,还可以到微软官网下载web plateform installer。打包安装一个网站,还可以安装wordpress等应用。
如果不用微软的IIS,也可以安装apache,但又需要配置,还要再安装php,然后再配置,目前不考虑。
配置完之后使用asp的Response.Write方法测试页面能否正常运行。一般都没有问题。
//VBScript格式保存为vbs.asp.
<%
response.write "Hello World."
%>
//Jscript格式保存为js.asp
<%
Response.Write("Hello World.");
%>
至此,IIS服务器和asp配置完成。
第四步,将asp页面与mysql连接。结果:OK。
使用asp的ADO对象连接mysql,首先把mysql作为数据源加入到ADODB的列表中。打开控制面板->管理工具->ODBC数据源(64位)。在User DSN中点击Add,发现mysql有两个driver,对应不同的编码,我选择的是MYSQL ODBC 5.3 Unicode Driver,点击完成,OK。
在asp中加入数据库连接的语句,在localhost站点对应的页面检测是否正常输出。如下。发现可以读取数据库。
//VBScript格式保存的vbsconnect.asp测试与mysql的连接
<%
on error resume next
dim adoConn
dim adoRS
dim counter
set adoConn = Server.CreateObject("ADODB.Connection")
adoConn.Open "Driver={MySQL ODBC 5.3 Unicode Driver}; Server=localhost; Port=3306; Option=0; Socket=; Stmt=; Database=mysql; Uid=root; Pwd=123456;"
set adoRS = Server.CreateObject("ADODB.Recordset")
adoRS.ActiveConnection = adoConn
if adoConn.errors.count = 0 then
response.write "<h2>Fields In The 'user' Table:</h2>"
adoRS.Open "describe user"
while not adoRS.EOF
response.write adoRS.fields(0).value & "<br>"
adoRS.MoveNext
wend
else
response.write "ERROR: Couldn't connect to database"
end if
adoConn.Close
%>
//JScript格式保存的jsconnect.asp测试与mysql的连接
<%
Con=Server.CreateObject("ADODB.Connection");
Con.Open("Driver={MySQL ODBC 5.3 Unicode Driver}; Server=localhost; Port=3306; Option=0; Socket=; Stmt=; Database=mysql; uid=root; pwd=123456;");
var sql = "SELECT user,password,host FROM user where user='root'";
var rs = Server.CreateObject ("ADODB.Recordset");
rs.Open(sql,Con);
Response.Write(rs.Fields(0).value+' '+rs.Fields(1).value+' '+rs.Fields(2).value);
Con.Close;
%>
其中Driver代表数据库驱动,需要与数据源中的Driver名称一致,server是服务器地址,port是mysql的端口,uid或user是mysql的登录账户,pwd或password是密码,database是要进入的数据库名称,其他的参数介绍可参看:
http://jingyan.baidu.com/article/22a299b51d22d59e19376a0d.html
http://stackoverflow.com/questions/4407841/whats-the-option-n-in-the-mysql-odbc-connection-string
https://www.connectionstrings.com/mysql-connector-odbc-5-1/
https://www.connectionstrings.com/mysql/
至此,asp与mysql连接完成。
第五步,用matlab向asp页面提交信息并读取返回内容。结果:OK。
在IIS服务器中创建readmatlab.asp页面,输入以下代码保存。
//Jscript格式
<%
Response.Write(Request.QueryString("name")+" "+Request.QueryString("sex"));
%>
在matlab中使用urlread函数+'get'参数:
[pagesourcecode,status]=urlread('http://localhost/readmatlab.asp','Get',{'name','Xiaoming','sex','male'});
运行后发现pagesourcecode中返回的字符串为'Xiaoming male'。说明readmatlab.asp页面接受了提交的'name'参数'Xiaoming'和'sex'参数'male',并使用response.write方法输出在页面上。然后matlab的urlread函数读取了response.write的内容。
至此,使用matlab与asp连接完成。
第六步,最终目标,将matlab经asp中转读取或写入mysql,再获得返回参数。结果:?
至此,应该是没有疑问了。略。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-23 17:55
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社