Matlab如何连接Oracle数据库及基本操作
语言和语法都是相通的,了解Oracle的连接和处理,对于其他的数据库也是类似的。 一 通过ODBC实现到oracle的连接
)控制面板->管理工具->ODBC数据源->在系统DSN中添加oracle数据源;
)matlab命令行中输入建立连接的命令:
conn_odbc = database('QUIK', ... %ODBC名称 'QUIK', ... %登录用户名 'QUIK') %登录密码 二 通过JDBC建立与oracle的连接
)找到jdbc的驱动程序文件D:\oracle_app\lcm\product\11.2.\dbhome_1\jdbc\lib\ojdbc6.jar,将其复制到
matlab安装目录的java子目录D:\Program Files\MATLAB\R2013a\java\jar\toolbox;
)修改matlab的classpath文件:D:\Program Files\MATLAB\R2013a\toolbox\local\classpath.txt,在结尾添加一
行内容:$matlabroot/java/jar/toolbox/ojdbc6.jar
)matlab命令行中输入建立连接的命令:
conn_jdbc = database('QUIK', ... %数据库服务名 'QUIK', ... %登录用户名 'QUIK', ... %登录密码 'oracle.jdbc.driver.OracleDriver', ... %驱动名称 'jdbc:oracle:thin:@localhost:1521:') %连接字符串
通过ping命令查看连接状况:
ping(conn_odbc) ping(conn_jdbc) 三 数据库查询
exec函数用于执行SQL语句,并返回一个cursor对象,需要注意的是,这里所说的cursor对象并不是我们在SQL中理解的游标,通过下面执行的语句结合理解:
curs = exec(conn_odbc, 'select EMP_NO,NAME from EMP_MAIN'); %执行查询 curs = fetch(curs); %获取查询呢结果 data = curs.Data; %将查询结果输出到矩阵变量
注意:通过第一句exec执行后,返回的结果变量curs并没有直接包含查询的结果,通过fetch函数才能将查询结果返回给赋值变量,最终的查询结果是包含在curs.Data中的!
四 向数据库中插入数据
fastinsert(conn, 'tablename', colnames, exdata)
参数说明:
tablename:表名
colnames:列名
exdata:待插入的数据
示例:
%执行插入 fastinsert(conn_odbc,'EMP_MAIN',{'EMP_NO','NAME'},{'LIKEQIANG','李克强'}); %查看插入的数据 curs = exec(conn_odbc, 'select EMP_NO,NAME from EMP_MAIN where EMP_NO=''LIKEQIANG'''); curs = fetch(curs); data = curs.Data
注意:当需要同时向同一个表中插入多条数据时,可以通过向exdata中传入一个多行的矩阵,矩阵的每一行表示一条记录。在java中用惯了Statement.executeUpdate的朋友们,看到这个功能也许会小兴奋一下,至少我是,呵呵。
五 数据库更新
update(conn, 'tab', colnames, exdata, 'whereclause') %一条update语句
update(conn, 'tab', colnames, ... %更新多条update语句
{datA,datAA, ...; datB,datBB, ...; datn, datNN}, ...
{'where col1 = val1'; 'where col2 = val2'; ... 'where coln = valn'}
参数说明:
tab:表名
colnames:列名
exdata:待更新的数据
whereclause:条件
示例:
%执行更新 update(conn_odbc, 'EMP_MAIN', {'EMP_NO','NAME'}, {'LIKEQIANG_OK','李克强_OK'}, ... 'WHERE EMP_NO=''LIKEQIANG'''); %查看更新后的数据 curs = exec(conn_odbc, 'select EMP_NO,NAME from EMP_MAIN where EMP_NO=''LIKEQIANG_OK'''); curs = fetch(curs); data = curs.Data 六 对数据库的其他操作
)执行数据操作的回滚和提交
exec(conn_odbc, 'rollback'); exec(conn_odbc, 'commit');
)执行DDL语句
基本语法是:exec(conn,'sql语句');
示例:
%创建新表
mktab = ['CREATE TABLE Person(LastName varchar2(20),' ... 'FirstName varchar2(30),Address varchar2(100),Age number)'];
curs = exec(conn_odbc, mktab);
%修改表结构 curs = exec(conn_odbc, 'ALTER TABLE Person ADD City varchar2(30)')
%删除表 curs = exec(conn_odbc, 'DROP TABLE Person')
)执行存储过程和函数
%执行存储过程
curs = exec(conn,'{call sp_name (parm1,parm2,...)}');
curs = fetch(curs);
%执行函数
curs = exec(conn,'SELECT dbo.get_prodCount() as num_products');
curs = fetch(curs);
注意:上面的语句是从matlab的帮助文档中粘贴过来的,没经过实际测试,如果的确需要用,只能劳驾自己尝试了! 七 完成数据库操作
在完成对数据库的查询、修改等操作后,需要关闭打开的游标和数据库连接,切记!
%关闭游标
close(curs);
%关闭数据库连接
close(conn_odbc);
1、准备工作和相关系列配置和是否链接成功测试:

Matlab如何连接Oracle数据库及基本操作的更多相关文章
- Python连接oracle数据库的基本操作
1,创建数据库连接connect和关闭数据库连接close 1.1 创建数据库连接的三种方式: 方法一:用户名.密码和监听分开写 import cx_Oracle db=cx_Oracle.conne ...
- oracle建表权限问题和JSP连接oracle数据库基本操作
JSP连接oracle数据库相关操作 1.创建表 打开Enterprise Manager Console,为用户添加权限CREATE ANY TABLE和分配一定的表空间USERS限额1024k. ...
- java连接Oracle数据库
Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表: create table student ( id ) not null primary key, ...
- 记录排查解决Hubble.Net连接Oracle数据库建立镜像库数据丢失的问题
起因 前几天在弄Hubble连接Oracle数据库,然后在mongodb中建立一个镜像数据库; 发现一个问题,原本数据是11W,但是镜像库中只有6w多条; 刚开始以为是没运行好,又rebuild了一下 ...
- NodeJs连接Oracle数据库
nodejs连接oracle数据库,各个平台的官方详情文档:https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 我的nodej ...
- jdbc连接oracle数据库
/*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...
- 用VS连接oracle数据库时ORA-12504错误
在用VS2008连接oracle数据库时,可能会出现: ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME 只需在web.config文件Data ...
- ASP.NET连接Oracle数据库的步骤详解(转)
ASP.NET连接Oracle数据库的步骤详解 本文我们主要介绍了ASP.NET连接Oracle数据库的步骤及每个步骤需要进行的设置,希望能够对您有所帮助. 在用ASP.NET开发应用程序时, ...
- 64 位win 7或windows 8下的visual studio不能连接Oracle数据库调试网站的问题
在64 位win 7或windows 8系统下,visual studio直接F5运行网站调试,你会发现不能连接Oracle数据库,会报一个“ORA-06413: Connection not ope ...
随机推荐
- [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)
一. 单线程 我们常说“JavaScript是单线程的”. 所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个.不妨叫它主线程. 但是实际上还存在其他的线程.例如:处理A ...
- webstrom的热更新没效果
webstorm保存的时候会先保存到临时文件中,其实并没有真正保存,要在setting->stystem settings下的“use save write”去掉
- 让我们了解 Ceph 分布式存储
前言 最近在学习 kubernetes 过程中,想实现 pod 数据的持久化.在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业.在选型方面,个人更加倾向于社区火热的项目,Glu ...
- 【Java】 剑指offer(8) 用两个栈实现队列
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数append ...
- 【Java】 剑指offer(43) 从1到n整数中1出现的次数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例 ...
- 064 UDF
一:UDF 1.自定义UDF 二:UDAF 2.UDAF 3.介绍AbstractGenericUDAFResolver 4.介绍GenericUDAFEvaluator 5.程序 package o ...
- P2393 yyy loves Maths II
P2393 yyy loves Maths IIlong double比如保留5位小数*1000000都变成整数最后再/1000000避免精度误差scanf("%Lf",& ...
- Faster RCNN 学习与实现
论文 论文翻译 Faster R-CNN 主要分为两个部分: RPN(Region Proposal Network)生成高质量的 region proposal: Fast R-CNN 利用 reg ...
- Flutter中打造多行列列表GridView组件的使用
GridView组件.一个可滚动的二维空间数组. 在使用无限加载滚动列表的时候,最先使用的还是ListView组件.但若是要一行显示2列或者更多列的滚动列表,GridView组件更为方便.如下 在向服 ...
- Vim-一款好用的文本编辑器
关于vim的使用,通过博客,无论是静态的截图或者是代码/文本复制,很难展示所要表现的内容.更多需要读者亲自敲键盘实践之后才知道其作用. 本文不会也无法描述vim过多的细节,仅仅是对于常用的命令做一下记 ...