《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 37595|回复: 75
收起左侧

[教程] Matlab与SQL Server数据库编程指南

    [复制链接]
发表于 2010-8-12 21:22:49 | 显示全部楼层 |阅读模式

本帖是MATLAB和SQL Server数据库编程的简单示例,gif图片详细演示了怎么对SQL Server数据库进行配置和相应的读取。


MatlabSQL Server数据库编程-Godman

本文将讲述以ODBC的方式对SQL Server数据库进行链接和相关读取。

如有疑问可以邮件联系 tntuyh@163.com

                          ------------------- Godman  2010.2.27 Good Luck

1.
配置数据源

“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源”。具体操作见“数据源配置-SQL Server.gif


2.
建立链接对象——database

调用格式:

conna=database(‘datasourcename’,’username’,’password’);

conna=database('db_sql_server','sa','sa123456789');

%数据库名,用户名,密码;

其中db_sql_server为上文中创建的数据源名称,其余为SQL安装时输入的用户名和密码

3.
建立并打开游标——exec

调用格式:

curs=exec(conna,'sqlquery')

curs=exec(conna,'select * from database')

其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据.

4.
把数据库中的数据读取到Matlab中——fetch

调用格式:

curs=fetch(curs,RowLimit);

Data=curs.Data%把读取到的数据用变量Data保存.

curs=fetch(curs)

把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。

上述四点是matlab从数据库文件中读取数据到matlab中的基本步骤。

实例:

timeoutA=logintimeout(5);%设置连接数据库的时间

conn = database('db_sql_server','sa','sa123456789');

%数据库名,用户名,密码

ping(conn);

cursorA=exec(conn,'SELECT * FROM Sh');

%/执行select语句,Sh:数据表名

setdbprefs ('DataReturnFormat','cellarray')
;

%返回数据类型为元包(cell)型,默认为CELL型。要通过cell2mat()转换格式

cursorA=fetch(cursorA);

%将数据库中的内容写入MATLAB工作空间

AA=cursorA.Data

%得到数据库中的数据

%关闭连接

close(cursorA)

close(conn);



其余操作如插入、删除、更新等可参加以前写的基于Access数据库的相关内容,下列函数可供参考,具体用法可以在Matlab中通过help查询。

数据库工具箱函数列表
数据库访问函数
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 得到目录存储程序
supports 判断是否支持数据库元数据
tableprivileges 得到数据库表优先权
tables 得到数据库表名称
versioncolumns 得到自动更新表列

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
发表于 2017-6-12 04:41:51 来自手机 | 显示全部楼层
再三谢谢你了哈。
回复 支持 反对

使用道具 举报

发表于 2017-6-12 04:39:08 来自手机 | 显示全部楼层
好东西谢谢共享。
回复 支持 反对

使用道具 举报

发表于 2010-8-13 08:27:35 | 显示全部楼层
期待呀~~~~
发表于 2010-8-21 13:56:10 | 显示全部楼层
最近在学怎么连数据库,先看看吧。
发表于 2010-8-24 23:50:51 | 显示全部楼层
发表于 2010-9-6 21:19:34 | 显示全部楼层
好期待啊啊啊啊 希望不会失望啊
发表于 2010-11-25 11:07:53 | 显示全部楼层
发表于 2010-11-25 16:12:31 | 显示全部楼层
回复 menyubin 的帖子

赞,下下来看看。以前没有用过用matlab倒腾数据库呢
发表于 2011-1-28 16:55:03 | 显示全部楼层
这个帖子不回对不起自己!
我一天不来MATLAB技术论坛就不爽~~~~

极端重要的知识
顶起~~~
发表于 2011-3-23 16:06:30 | 显示全部楼层
好东西,可以看一下!
发表于 2011-3-23 16:07:28 | 显示全部楼层
为什么我下不了呢?
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-2-20 10:18 , Processed in 0.064326 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表