首先需要安裝navicat for SQL server 軟件,
為了實現Matlab 通過JDBC方式連接Sqlserver數據庫, 需要安裝Sqlserver JDBC驅動. 地址:
https://blog.csdn.net/yinxing408033943/article/details/7677769
在navicat for SQL server進行試驗, 登陸輸入用戶名,
新建查詢,一個簡單的查詢例子
送上Navicat sql 的一些快捷鍵:
ctrl + /: 注釋
ctrl + shift + /: 取消注釋
ctrl + l: 刪除一行
在matlab中實現如下: 新建一個函數getConn()
%連接數據庫獲取數據
function conn=getConn()
% 數據庫url
databaseurl='jdbc:sqlserver://10.2.224.56:1433;database=newwind'; %根據需要自行修改
% jdbc驅動
driver='com.microsoft.sqlserver.jdbc.SQLServerDriver'; %driver
% 登錄名
username='***';
% 密碼
password='****';
% 數據源名稱
databasename='newwind';
% 得到與數據庫的連接
conn = database(databasename,username,password,driver,databaseurl);
% % 如果未連接成功,拋出錯誤並顯示原因
% if ~isconnection(conn)
% error('與數據庫''%s''連接失敗:%s', databasename, conn.Message);
% end
接着, 新建一個腳本get_data
tt1='''20160930'',''20161231'''; code_sql='''000001.SZ'',''002808.SZ'''; conn=getConn(); sql=['select s.report_period ,s.s_info_windcode,a.s_fa_eps_basic,a.TOT_OPER_REV ',... ' from (select DISTINCT t.report_period,t.s_info_windcode from ASHAREINCOME t',... [' where t.report_period IN(',tt1],... [')and t.s_info_windcode IN (',code_sql],... ')) s full join (SELECT report_period,s_info_windcode,s_fa_eps_basic ,TOT_OPER_REV',... [' from ASHAREINCOME where report_period IN(',tt1],... [') and statement_type=''408001000''and s_info_windcode IN (',code_sql],... ')) a on s.report_period=a.report_period and s.s_info_windcode=a.s_info_windcode',... ' order by s.s_info_windcode, s.report_period']; curs = exec(conn,sql); curs = fetch(curs); data_try= curs.Data; size(data_try)
得到結果
!!!注意:wind賬號一般由公司提供, 且只能在公司內部網才可以用.