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 ...
随机推荐
- C#泛型(一)
简介: 先看看泛型的概念--“通过参数化类型来实现在同一份代码上操作多种数据类型.利用“参数化类型”将类型抽象化,从而实现灵活的复用”. 很多初学者在刚开始接触泛型的时候会比较难理解 “泛型” 在这里 ...
- POJ 3421 X-factor Chains (因式分解+排列组合)
题意:一条整数链,要求相邻两数前一个整除后一个.给出链尾的数,求链的最大长度以及满足最大长度的不同链的数量. 类型:因式分解+排列组合 算法:因式分解的素因子个数即为链长,链中后一个数等于前一个数乘以 ...
- POJ 1930 Dead Fraction (循环小数-GCD)
题意:给你一个循环小数,化成分数,要求分数的分母最小. 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数化分数 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位 ...
- Codeforces Round #319 (Div. 2) E - Points on Plane
题目大意:在一个平面里有n个点,点坐标的值在1-1e6之间,让你给出一个遍历所有点的顺序,要求每个点走一次,且 曼哈顿距离之和小于25*1e8. 思路:想了一会就有了思路,我们可以把1e6的x,y坐标 ...
- hdu 4738 Caocao's Bridges 求无向图的桥【Tarjan】
<题目链接> 题目大意: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.周瑜为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸 ...
- HDU 1051 Wooden Sticks 造木棍【贪心】
题目链接>>> 转载于:https://www.cnblogs.com/Action-/archive/2012/07/03/2574800.html 题目大意: 给n根木棍的长度 ...
- 009.Docker Compose部署及基础使用
一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...
- BZOJ.1468.Tree(点分治)
BZOJ1468 POJ1741 题意: 计算树上距离<=K的点对数 我们知道树上一条路径要么经过根节点,要么在同一棵子树中. 于是对一个点x我们可以这样统计: 计算出所有点到它的距离dep[] ...
- POJ.1160.Post Office(DP 四边形不等式)
题目链接 \(Description\) 一条直线上有n个村庄,位置各不相同.选择p个村庄建邮局,求每个村庄到最近邮局的距离之和的最小值. \(Solution\) 先考虑在\([l,r]\)建一个邮 ...
- 潭州课堂25班:Ph201805201 并发(进程与线程池) 第十四课 (课堂笔记)
循环执行一个线程 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/7/20 0020 5:35 import threading import queue ...