1.找到MYSQL的JDBC的JAR包,见这个网址:http://bbs.tucue.com/showtopic.aspx?forumid=70&forumpage=1&topicid=657&go=next,虽然不太官方,不过好使就行~
2.解压缩,并将mysql-connector-java-5.1.7-bin.jar文件拷贝到D:/program
files/MATLAB/R2009a/java/jar/toolbox,看个人情况这个~
3.到D:/program
files/MATLAB/R2009a/toolbox/local,找到classpath.txt文件,打开,并添加用来加载mysql的jdbc驱动
$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.7-bin.jar
-------到这里驱动就算好了,打开MATLAB-----------
4.q=database('dqrecord','root','root','com.mysql.jdbc.Driver','jdbc:mysql://127.0.0.1:3306/dqrecord');
MATLAB官方http://www.mathworks.com/access/helpdesk/help/toolbox/database/ug/database.html
有说明,help中也有说明,不过容易把自己搞晕啊,我试验了多次搞明白了
第一个参数:数据库的名称,就是要操作的数据库的名称
第二个参数:用户名
第三个参数:密码
第四个参数:连接的驱动,这里就写这个,不用改
第五个参数:数据库的连接路径吧,jdbc:mysql://,前面这个是jdbc,用mysql数据库,后边是具体的路径,数据库的IP,端口,和数据库的名称,跟第一个参数一样
网上有人就把这个搞错了,我最开始也搞错了
-------------------------------------------------
然后就可以试试啦,ping(q)
ok~
哈哈,这个博客没啥人知道,就当作日记~
-------------------------------------------------
接着
cursorA = exec(q,'select * from dqrecord limit 100');
没结果是不?这句话只是个语句,要执行再来一句:
cursorA=fetch(cursorA) ;
这句话真形象~
cur=cursorA.data就是数据,是一个CELL结构
如果想得到某一列的值,可以先求出cur中共有多少列
num=rows(cursorA)
再把CELL结构转换成MATRIX结构
cur = cell2mat(cur);
如果想取第一列,则可以如下写
a=cur(1:num,1);
则查询结果的第一列就加到了向量a中
先要安装mysql驱动程序包,详细步骤如下:
Step 1: 将mysql-connector-java-5.1.7-bin.jar文件拷贝到......\MATLAB\R2009a\java\jar\toolbox
Step 2:
到......\MATLAB\R2009a\toolbox\local目录下,找到classpath.txt文件,打开,并添加用来加载mysql的jdbc驱动语句:
$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.7-bin.jar
Step 3:重新打开MATLAB即可
驱动程序安装成功后,接来下要是matlab连接mysql数据库的代码:
conn =database('databasename','username','password','driver','databaseurl')
连接成功后,返回连接对象。
参数如下:
*databasename:
数据库名称.
*driver:
JDBC driver.
*username
and password: 用户名和密码.
*databaseurl:
类似于jdbc:subprotocol:subname. subprotocol 是数据库类型,
subname 类似于//hostname:port/databasename.
如果matlab和数据库建立了连接,将返回类似于如下信息:
Instance:
'SampleDB'
UserName:
''
Driver:
[]
URL:
[]
Constructor:
[1x1 com.mathworks.toolbox.database.databaseConnect]
Message:
[]
Handle:
[1x1 sun.jdbc.odbc.JdbcOdbcConnection]
TimeOut:
0
AutoCommit:
'off'
Type:
'Database Object'
连接mysql的代码如下:
conn = database('tissueppi','root','root','com.mysql.jdbc.Driver','jdbc:mysql://localhost:3306/tissueppi');
连接成功后,就可以用exec函数执行sql语句
exec函数执行sql语句并返回一个开指针
语法如下:
curs = exec(conn,'sqlquery')例如:curs
= exec(conn, 'select * from customers')
执行完查询后,还要将查询结果从开放cursor对象导入到对象curs中,该功能是用
cursor.fetch函数实现的。
语法如下:
curs = fetch(curs)
使用curs.Data来显示数据,curs.Data返回一个CELL结构,可以先把CELL结构转换成
MATRIX结构再取值:
cur =cell2mat(cur)
a=cur(1,1);
则查询结果就加到了向量a中
注意:
在exec函数执行查询过程中,有的sql语句要输入变量,这时可使用strcat函数完成该
功能。
t = strcat(s1, s2, s3, ...)for(t=1:10)
sql1
= strcat('select count(did) from rss_genepairs_u where
gocc>=',num2str(t),'
|| gomf >= ',num2str(t),' || gobp >=
',num2str(t));
end
完整代码如下:
conn =
database('tissueppi','root','root','com.mysql.jdbc.Driver','jdbc:mysql://localhost:3306/tissueppi');
for t=0.5:0.01:0.91
for
x=0.5:0.1:11
sql
= strcat('select count(did) from rss_genepairs_x2 where score
<=',num2str(x),' and did in(select did from rss_genepairs_u
where gocc >=',num2str(t),' || gomf >= ',num2str(t),' || gobp
>= ',num2str(t),')');
aTemp
= exec(conn,sql);
aTemp
= fetch(aTemp);
a
= aTemp.Data;
a
= cell2mat(a);
a=
a(1,1);
end
end