一直想通过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/ 至此,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] 定时运行+完成计算后发送邮件 |
|