資源描述:
《Matlab的Sql Server數(shù)據(jù)庫(kù)編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Matlab的SqlServer數(shù)據(jù)庫(kù)編程lyqmath一、數(shù)據(jù)庫(kù)表創(chuàng)建數(shù)據(jù)庫(kù)表有兩種方式,第一種是還原數(shù)據(jù)庫(kù)的方式,假設(shè)已經(jīng)存在數(shù)據(jù)庫(kù)備份文件“TESTDB”,可以通過還原數(shù)據(jù)庫(kù)的方式來獲取數(shù)據(jù)。1.????????選擇還原數(shù)據(jù)庫(kù)2.????????選擇數(shù)據(jù)庫(kù)文件3.????????執(zhí)行還原操作這樣就可以獲取已備份的數(shù)據(jù)庫(kù)。如果沒有數(shù)據(jù)庫(kù)備份,則可以通過如下方式來創(chuàng)建數(shù)據(jù)庫(kù),并導(dǎo)入表信息。以附表1為例,根據(jù)已有表結(jié)構(gòu)建立數(shù)據(jù)庫(kù)表data1,同理建立數(shù)據(jù)庫(kù)表data2。這里采用最常用的方式來進(jìn)行處理。1.????????創(chuàng)建csv數(shù)據(jù)
2、文件data1.csv2.????????打開企業(yè)管理器,創(chuàng)建數(shù)據(jù)TESTDB,導(dǎo)入數(shù)據(jù)3.????????按向?qū)?zhí)行4.????????選擇文本文件5.????????選擇csv文件6.????????按向?qū)?zhí)行7.????????按向?qū)?zhí)行8.????????按向?qū)?zhí)行9.????????按向?qū)?zhí)行10.????按向?qū)?zhí)行11.????按向?qū)?zhí)行12.????按向?qū)?zhí)行13.????設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)14.????根據(jù)字段要求設(shè)計(jì)表15.????查看數(shù)據(jù)庫(kù)二、系統(tǒng)配置為了保證Matlab能正常訪問SqlServer數(shù)據(jù)庫(kù),這里采用最
3、常見的設(shè)置數(shù)據(jù)源的方式來處理。1.????????建立ODBC數(shù)據(jù)源進(jìn)入控制面板->管理工具->ODBC數(shù)據(jù)源->用戶DNS。2.????????點(diǎn)擊“添加”3.????????選擇“SQLServer”、“完成”4.????????數(shù)據(jù)源名稱編程時(shí)要用到,可任意命名。服務(wù)器選擇自己指定的5.????????選擇默認(rèn)數(shù)據(jù)庫(kù),下一步6.????????按向?qū)?zhí)行7.????????完成配置8.????????測(cè)試連接三、Matlab測(cè)試訪問已建立的數(shù)據(jù)源,并做連接測(cè)試。代碼clc;clear?all;close?all;%?獲取數(shù)據(jù)源的
4、名稱sourceName=?'TESTDB';%?允許登錄連接時(shí)間最長(zhǎng)為5sTimeout=logintimeout(5);%?獲取數(shù)據(jù)庫(kù)連接對(duì)象conn=database(sourceName,?'sa',?'df1500');%?測(cè)試數(shù)據(jù)庫(kù)連接狀態(tài)fprintf('數(shù)據(jù)庫(kù)連接狀態(tài):');disp(ping(conn));%?獲取數(shù)據(jù)元對(duì)象dbmeta=dmd(conn);%?獲取表名信息t=tables(dbmeta,?'');%?獲取返回?cái)?shù)組的大小[trow,tcolumn]=size(t);?index=1;%?由于表
5、中既包含了系統(tǒng)表格,又包含了用戶表格,需要在其中%?找出用戶表格,對(duì)t數(shù)組的每一行的第二個(gè)元素判斷是table%?則為用戶表for?i=1:trow????if?strcmp(t{i,2},?'TABLE')??????????????tablename{1,index}=t{i,1};???????index=index+1;????end???end?for?i=1:index-1???fprintf('表名:%s',tablename{1,i});end??%?獲取欲查看的表格的名稱tabletosee=tablename{
6、1,1};%?構(gòu)造查詢的sql語句sql=['select*from',tabletosee];%?執(zhí)行該sql語句curs=exec(conn,sql);%?設(shè)定數(shù)據(jù)返回格式setdbprefs('DataReturnFormat',?'cellarray');%?獲取結(jié)果集對(duì)象curs=fetch(curs);%?獲取返回?cái)?shù)據(jù)的行數(shù)numrows=rows(curs);%?獲取返回?cái)?shù)據(jù)的列數(shù)numcols=cols(curs);%?在屏幕中顯示表格信息fprintf('表%s結(jié)構(gòu)為:',tabletosee);%分別獲取相關(guān)信
7、息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;????%?獲取字段是否可空???t
8、ableinfo{k,5}=attributes.nullable;end%?顯示數(shù)據(jù)表的結(jié)構(gòu)信息disp(tableinfo);?for?i=1:numcols???fprintf('%s',tableinfo{i,1