matlab2017a连接mysql matlab连接access数据库
转载
Matlab与数据库连接
最近要实现复杂网络相关的实现,每次有个新想法就要重新写程序,着实让人呕吐啊~~所以决定这次花点功夫做个通用点的,所以也就需要接触很多以前没有看到的内容,今晚的任务就是实现Matlab与Access数据库的连接,在baidu搜了一圈,回答倒是有,但答案都一样,也不知是从哪抄来的程序,可是适用了一下总是出问题,最后才知道,这些人啊,就知道抄,也不动手试试,或者他们觉得这是基础知识,所以就忽略了,着实让我这个新手头疼啊~~~不过好在最后还是找到了根源,虽然为了这个小功能花费了不少时间,但最终还是很有成就感的哈,废话不多说,现在就来说说如何实现吧
Step1:当然是要建立一个数据库啦,哈哈,这个大家应该不用说了吧;
Step2:这一步是很多帖子都忽略的,就是需要用ODBC进行数据库连接,当我发现这个功能的时候,才发现其实暑假在做项目的时候就已经用到了,可是那时候只是一味依赖师兄,所以没好好看,哎呀,真是不该偷懒,嘿嘿
方法就是:控制面板--》管理工具--》数据源(ODBC)---》用户DSN--》添加
然后再数据源名处随意命个名,比如Dataset~~然后点击选择加入在第一步建立的数据库,这一步就ok了~~~
Step3:这就是用到Matlab了,建立一个新的M文件,将以下代码拷贝进去:
function dbimportdemo()
%DBIMPORTDEMO Imports data into MATLAB from a database.
% Version 1.0 21-Oct-1997% Author(s): E.F. McGoldrick, 12/5/1997
% Copyright 1984-2002 The MathWorks, Inc.
% $Revision: 1.9 $ $Date: 2002/06/17 12:00:49 $
% Set maximum time allowed for establishing a connection.
timeoutA=logintimeout(5)
% Connect to a database.
connA=database('Dataset','','')--%这个Dataset就是刚刚命的名称,(*^__^*) 嘻嘻……
% Check the database status.
ping(connA)--%如果没有第二步,就会在这里报错~~
%错误的:
%正确的:
% Open cursor and execute SQL statement.
cursorA=exec(connA,'select * from Zachary空手道俱乐部');
% Fetch the first 10 rows of data.
cursorA=fetch(cursorA,10)
% Display the data.
AA=cursorA.Data
% Close the cursor and the connection.
close(cursorA)
close(connA)
嗯~~到此为止,应该就结束了,哈哈,自己动手试试看吧~~~
1 首先创建数据库,就不废话了。 2 建立ODBC数据源:控制面板->管理工具->ODBC数据源->用户DNS。如图
点击“添加”
选择“SQL Server”,“完成”。
数据源名称--编程时要用到,可任意命名。服务器选择自己指定的
3 编程(来自网络)这段程序已经过验证。 sourceName=input('Enter the source Name:','s'); %获取数据源的名称(dbtest)
Timeout=logintimeout(5); %允许登录连接时间最长为5s
cnotallow=database(sourceName,'sa','123'); %获取数据库连接对象
ping(conn) %测试数据库连接状态
dbmeta=dmd(conn); %获取数据元对象
t=tables(dbmeta,'tutorial'); %获取cata为tutorial的表名
[trow,tcolumn]=size(t); %获取返回数组的大小
index=1;
for i=1:trow %由于表中既包含了系统表格
if strcmp(t{i,2},'TABLE') %又包含了用户表格,需要在其中
tablename{1,index}=t{i,1}; %找出用户表格,对t数组的每一行
index=index+1; %的第二个元素判断是table则为用
end %户表。
end
tabletosee=input('Which one would you want to use? ','s'); %获取欲查看的表格的名称
sql=['select * from ',tabletosee]; %构造查询的sql语句
curs=exec(conn,sql); %执行该sql语句
setdbprefs('DataReturnFormat','cellarray'); %设定数据返回格式
curs=fetch(curs); %获取结果集对象
numrows=rows(curs); %获取返回数据的行数
numcols=cols(curs); %获取返回数据的列数
disp('--------------------------------------------------------------'); %在屏幕中显示表格信息
fprintf(' Information of Table %s . ',tabletosee);
disp('--------------------------------------------------------------');
fprintf('number of rows=%d, number of columns=%d ',numrows,numcols);
disp(' FieldName typeName typeValue columnWidth nullable');
for k=1:numcols %分别获取相关信息
attributes=attr(curs,k);
tableinfo{k,1}=attributes.fieldName; %获取字段名称
tableinfo{k,2}=attributes.typeName; %获取字段类型名
tableinfo{k,3}=attributes.typeValue; %获取字段类型代码
tableinfo{k,4}=attributes.columnWidth; %获取字段的宽度
tableinfo{k,5}=attributes.nullable; %获取字段是否可空
end
disp(tableinfo); %显示数据表的结构信息
disp('-------------------------------------------------------------');
fprintf(' Data of Table %s . ',tabletosee);
disp('--------------------------------------------------------------');
for i=1:numcols
fprintf(' %s',tableinfo{i,1});
end
fprintf(' ');
tabledata=curs.data; %获取结果集对象的数据
disp(tabledata); %显示数据表中的数据
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。