matlab编程,matlab连接MySQl混合编程2

(2).采用修改注册表,自动配置数据源。
下面是自己写的修改注册表值的方法函数
function LinkDBMySQL(DB_sourcename,DATABASE,UID,PWD,SERVER)
%±¾º¯ÊýÊÇÓÃÀ´×Ô¶¯ÅäÖÃMySQLÊý¾Ý¿âÔ´Îļþ¡£
% DB_sourcename:Êý¾ÝÔ´Ãû³Æ
% DATABASE£º
% UID£ºÓû§Ãû
% PWD£ºÃÜÂë
% SERVER£º·þÎñÆ÷
%º¯ÊýÔËÐк󽫲úÉúÎļþregedit_DBMySQL.reg
fid=fopen('regedit_DBMySQL.reg','wt');
String='Windows Registry Editor Version 5.00\n\n';
fprintf(fid,String);
String='[HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\ODBC Data Sources]\n';
fprintf(fid,String);
String=strcat(['"' DB_sourcename '"'],'="MySQL ODBC 5.1 Driver"\n\n');
fprintf(fid,String);
String=['[HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\',DB_sourcename,']\n'];
fprintf(fid,String);
String=['"DATABASE"="',DATABASE,'"\n'];
fprintf(fid,String);
String='"Driver"="C:\\\\WINDOWS\\\\system32\\\\myodbc3.dll"\n';
fprintf(fid,String);
String=['"PWD"="',PWD,'"\n'];
fprintf(fid,String);
String=['"SERVER"="',SERVER,'"\n'];
fprintf(fid,String);
String=['"UID"="',UID,'"\n\n'];
fprintf(fid,String);
fclose(fid);
%´ò¿ªregedit_DB.regÎļþ£¬½«Á´½ÓÐÅÏ¢µ¼Èëµ½×¢²á±íÖÐ
dos('regedit_DBMySQL.reg');
delete('regedit_DBMySQL.reg');
调用方法如下(也不知道为什么从m文件复制过来,有点地方成了乱码):
LinkDB('数据源名','数据库','用户名','密码','服务器');
1. 建立链接对象——database
调用格式:
conna=database(‘datasourcename’,’username’,’password’);
如conna=database('SampleDB','','');其中SampleDB为上文中创建的数据源名称,当默认情况下,数据库文件的username和password为空。
2. 建立并打开游标——exec
调用格式:
curs=exec(conna,'sqlquery');
如curs=exec(conna,'select * from database')
其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据.
3. 把数据库中的数据读取到Matlab中——fetch
调用格式:
curs=fetch(curs,RowLimit);
Data=curs.Data;%把读取到的数据用变量Data保存.
如curs=fetch(curs);
把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。
5.数据返回类型
从数据库中读取数据到matlab有三种数据类型(默认为元胞类型cellarray),分别为元胞类型(cellarray),数字型(numeric),结构型(structure)。可以在链接数据库之前通过setdbprefs函数来进行设置。如果数据库文件中全部是数值型数据时最好采用numeric型的数据,这样可以使得读取速度大幅提高,特别是在大型数据读取时非常明显。
调用格式:
setdbprefs(‘datareturnformat’,’numric’)
6.养成良好习惯,随手关闭链接对象和游标——close
当不再使用数据库的链接对象时要及时关闭,这样才能及时的释放出内存,而且每次链接后所需要的内存量是非常大的,要是不及时关闭的话对后续计算的影响将非常非常的大。( 针对烂机子而言,要是你的电脑超强也无所谓的…..)
调用格式:
close(curs)
close(conna)
7.查看数据相关信息
Rows-查看数据行数
调用格式:numrows=rows(curs)
Cols——查看数据列数
调用格式:numcols=cols(curs)
Attr——查看数据属性
调用格式:attribute=attr(curs)
二.把数据写入到数据库中
8.添加数据到表中——insert函数
调用格式:
insert(conna,’tab’,colnames,exdata)
conna——链接对象,tab——数据库文件的表名,colnames——数据库表的列名,exdata——matlab变量
如:insert(conna,'try',{'a1', 'a2'},[45 65])
commit(conna)%确认数据更改
9.更新数据库中的数据——update
调用格式:
update(conna,’tab’,colnames,exdata,’whereclause’)
conna——链接对象,tab——数据库文件的表名,colnames——数据库表的列名,exdata——matlab变量,whereclause——SQL的where字句,如:update(conna,'try',{'a1', 'a2'},[45 65],’where XX=’XX’’)
commit(conna)%确认数据更改
10.建立新表——exec,creat table
调用格式:
conna=database('SampleDB','','');
exec(conna,['create table Table(name string,age int)']);
close(conna);
Table——表名,name,age——字段名


三.网上其他参考资料
Database Toolbox 2
和关系数据库进行数据交换
Database 工具箱可以使你使用MATLAB 的数据分析
和可视化工具对存储在数据库中的数据进行分析。在
MATLAB 工作环境中, 您可以使用结构化查询语言进
行:
■ 对数据库中的数据进行读写
■ 使用约束条件对数据库进行操作
您可以在MATLAB 中和绝大多数的数据库进行交
互, 包括Oracle、Sybase、Microsoft SQL Server、
MySQL、PostgreSQL 以及MicrosoftAccess 。该工具箱
还允许您在单个的MATLAB 任务中同时存取多个数据
库并且支持事务特性。它包含了Visual Query Builder
( 可视化查询工具), 它可以使您在不熟悉SQL 的情
况下和数据库进行交互。
Visual Query Builder
可以快速对您的数据
进行存取和图表显示
关键特性
■ 支持ODBC/JDBC 连接的数据库接口
包括Oracle、Sybase、Microsoft SQL
Server、MySQL、PostgreSQL 以及
Microsoft Access
■ 从MATLAB 中直接执行查询语句
■ 对于大数据量查询, 将增量获取数据
■ 在所有的数据导入和导出的过程中,
保留数据类型
■ 单个的MATLAB 任务中可以同时
存取多个数据库
■ 从一个数据库中导入数据,完成计
算后, 将结果输出到另外一个数据库
■ 在单个事务中获取大数据集, 或者分
割数据, 通过多个事务来完成
■ 通过在一个MATLAB 会话中保持数
据库连接来减少需要进行输入和输出
数据所需要的语句, 除非数据库连接
被显式关闭
■ 它可以使您在不熟悉SQL 的情况下
和数据库进行交互
MATLAB 中对Microsoft Access 数据库进行查询
数据库工具箱函数列表
数据库访问函数
clearwarnings 清除数据库连接警告
close 关闭数据库连接
commit 数据库改变参数
database 连接数据库
exec 执行SQL语句和打开油标
get 得到数据库属性
insert 导出MATLAB单元数组数据到数据库表
isconnection 判断数据库连接是否有效
isreadonly 判断数据库连接是否只读
ping 得到数据库连接信息
rollback 撤销数据库变化
set 设置数据库连接属性
sql2native 转换JDBC SQL 语法为系统本身的SQL语法
update 用MATLAB单元数组数据代替数据库表的数据
数据库游标访问函数
attr 获得的数据集的列属性
close 关闭游标
cols 获得的数据集的列数值
columnnames 获得的数据集的列名称
fetch 导入数据到MATLAB单元数组
get 得到游标对象属性
querytimeout 数据库SQL查询成功的时间
rows 获取数据集的行数
set 设置游标获取的行限制
width 获取数据集的列宽
数据库元数据函数
bestrowid 得到数据库表唯一行标识
columnprivileges 得到数据库列优先权
columns 得到数据库表列名称
crossreference 得到主健和外健信息
dmd 创建数据库元数据对象
exportedkeys 得到导出外部健信息
get 得到数据库元数据属性
importedkeys 得到导入外健信息
indexinfo 得到数据库表的索引和统计
primarykeys 从数据库表或结构得到主健信息
procedurecolumns 得到目录存储程序参数和结果列
procedures 得到目录存储程序 -0
supports 判断是否支持数据库元数据
tableprivileges 得到数据库表优先权
tables 得到数据库表名称
versioncolumns 得到自动更新表列
Tags:  matlab编程

延伸阅读

最新评论

发表评论