分享

科学网

 超弦 2017-03-07

一直想通过matlab对mysql数据库进行读写,尝试了几种方法。

第一步,mysql的安装与配置。结果:OK。

 当前电脑是window8的64位操作系统,在mysql的网站 http://dev./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 Files\MySQL\MySQL Server 5.6(mysql所在目录)

   datadir=C:\Program Files\MySQL\MySQL Server 5.6\data (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./downloads/connector/j/ 下载 mysql-connector-java-gpl-5.1.36.msi。运行后在 C:\Program Files (x86)\MySQL\Connector.J 5.1 找到了解压后的文件

需要将所有文件复制到matlab的java库中,路径 C:\Program Files\MATLAB\R2014a\java\jar\toolbox

在路径C:\Program Files\MATLAB\R2014a\toolbox\local下找到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./thread-259252-1-1.html

 最终在页面https://www./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:///questions/4407841/whats-the-option-n-in-the-mysql-odbc-connection-string

   https://www./mysql-connector-odbc-5-1/

   https://www./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,再获得返回参数。结果:?

 至此,应该是没有疑问了。略。




http://blog.sciencenet.cn/blog-2857675-925209.html

上一篇:[原][Matlab][01] 做一个简单的爬虫或下载器
下一篇:[原][Matlab][03] 定时运行+完成计算后发送邮件

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多