Matlab 調用Oracle數據庫


本文分兩部分,1、通過sql語句操作數據庫。2、通過ddl操作數據庫

一 通過ODBC實現到oracle的連接
1)控制面板->管理工具->ODBC數據源->在系統DSN中添加oracle數據源;
2)matlab命令行中輸入建立連接的命令:

conn_odbc = database('QUIK', ... %ODBC名稱 'QUIK', ... %登錄用戶名 'QUIK') %登錄密碼

二 通過JDBC建立與oracle的連接,此處我使用的也是利用JDBC操作。
1)找到jdbc的驅動程序文件D:\oracle_app\lcm\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar,將其復制到

matlab安裝目錄的java子目錄D:\Program Files\MATLAB\R2013a\java\jar\toolbox;
2)修改matlab的classpath文件:D:\Program Files\MATLAB\R2013a\toolbox\local\classpath.txt,在結尾添加一

行內容:

$matlabroot/java/jar/toolbox/ojdbc6.jar

3)matlab命令行中輸入建立連接的命令:

conn_jdbc = database('QUIK', ... %數據庫服務名 'QUIK', ... %登錄用戶名 'QUIK', ... %登錄密碼 'oracle.jdbc.driver.OracleDriver', ... %驅動名稱 'jdbc:oracle:thin:@localhost:1521:') %連接字符串

通過ping命令查看連接狀況:

ping(conn_odbc) ping(conn_jdbc)

 

1、數據庫實際查詢操作
 
%% Read data from Oracle

% Create a connection from Matlab to Oracle

% Oracle DataBase Connection Usage

% conn = database('DBname','UserName','UserPwd','oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:@localhost:1521:');

% conn = database('AVM','m','m', 'oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:@10.84.13.18:1521:');

% Execute query and get data from Oracle

curs = exec(conn, 'select * from mes_imp_operate_log d');

data = fetch(curs);


%  Get number from Oracle

data = data.Data;

 
% Last Close Cursor

close(curs);

close(conn);

data

 

 結果輸出(和實際中一樣的結果,結果存儲類似矩陣):

 

2、我們執行一條Insert的ddl試試:

%% Read data from Oracle

% Create a connection from Matlab to Oracle

% Oracle DataBase Connection Usage

% conn = database('DBname','UserName','UserPwd','oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:@localhost:1521:');

% 服務名記住要是Oracle實際中的,可能不是tns配置的

conn = database('A','mssd','mis', 'oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:@10.80.10.13:1521:');

 

% Execute query and get data from Oracle

sql = 'INSERT INTO mes_imp_operate_log(id, create_time, user_id, operate_type, remark, trace_no)VALUES(mes_imp_operate_log_s.nextval, SYSDATE, 3, ''ss'', ''錄入test'', ''test'' )';
curs1 = exec(conn, sql);

 

% Commit Or roolback Transction 

%exec(conn_odbc, 'rollback');

exec(conn, 'commit');


curs = exec(conn, 'SELECT * FROM   mes_imp_operate_log');

data = fetch(curs);


%  Get number from Oracle

data = data.Data;


% Last Close Cursor

close(curs);
close(conn);
測試結果:
 

 
Java程序調用matlab ,將.m 文件打包成jar,Eclipse調用,可以參考:
 
謝謝閱讀!
分享是美德!
分享共進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM