Oracle Jdbc demo
两种方式:
thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行。thin就是纯粹用Java写的ORACLE数据库访问接口。
oci 是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端。oci是Oracle Call Interface的首字母缩写,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度 快,但是需要安装和配置数据库。
从使用thin驱动切换到oci驱动在配置来说很简单,只需把连接字符串java:oracle:thin:@hostip:port:实例名换为java:oracle:oci@本地服务名即可。
如:从 jdbc:oracle:thin:@10.1.1.2:1521:xe
改成
jdbc:oracle:oci8:@xe
调用storedprocedure使用方式:
CallableStatement cstmt = con.prepareCall("CALL spname(? , ?)") ;
获取数据库的元数据信息:
DatabaseMetaData dbmd = con.getMetaData();
获取结果集的元数据信息:
ResultSetMetaData rsmd = rs.getMetaData();
statement构造函数可以包含3个参数:
resultSetType,它的取值包括:ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE或ResultSet.TYPE_SCROLL_SENSITIVE,默认情况下,该参数的值是ResultSet.TYPE_FORWARD_ONLY。resultSetConcurrency,它的取值包括:ResultSet.CONCUR_READ_ONLY或ResultSet.CONCUR_UPDATABLE,默认情况下,该参数的值是ResultSet.CONCUR_READ_ONLY。resultSetHoldability,它的取值包括:ResultSet.HOLD_CURSORS_OVER_COMMIT或ResultSet.CLOSE_CURSORS_AT_COMMIT。
获取数据集的时候,可以设定resultSet.SetFetchSize来避免outofmemory错误的发生。
关于jdbc数据库连接,同一个数据库连接,不能同时做多件事情,必须串行做?还是这是由数据库的隔离级别决定的?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException; public class jdbcdemo { //create table mytest(key varchar2(2000),value varchar2(2000)); public static final String ORACLE_DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver"; public static void main(String[] args)
{
System.out.println("hello jdbc"); final Connection conn = getConn(false);
//selectDemo("select * from mytest");
//insertDemo(conn,10000,1000);
//selectDemo("select * from mytest");
/*
new Thread(){public void run()
{
try {
insertDemo(conn,100,10);
} catch (SQLException e) {
e.printStackTrace();
}
}}.start(); new Thread(){public void run()
{
try {
insertDemo(conn,100,10);
} catch (SQLException e) {
e.printStackTrace();
}
}}.start();
*/
new Thread(){public void run()
{
try {
selectDemo(conn,"select * from mytest");
} catch (SQLException e) {
e.printStackTrace();
}
}}.start();
try {
Thread.sleep(1000);
conn.commit();
} catch (Exception e) {
e.printStackTrace();
} } static Connection getConn(boolean autoCommit)
{
Connection conn = null;
try {
Class.forName(ORACLE_DRIVER_CLASS);
//two method , use thin(pure java not need oracle client installed)
//or oci(need oracle client installed) conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.99.105:1521:xe","system","student");
conn.setAutoCommit(autoCommit);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch(SQLException sqle)
{
sqle.printStackTrace();
}
return conn;
} static void selectDemo(Connection conn,String sql) throws SQLException
{
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
rs.setFetchSize(1);//it is useful to set this value when the resultset is very large
ResultSetMetaData rsmd = rs.getMetaData();
for(int index=1;index<=rsmd.getColumnCount();index++)
System.out.print(rsmd.getColumnName(index)+"\t");
System.out.println();
while(rs.next())
{
for(int index=1;index<=rsmd.getColumnCount();index++)
System.out.print(rs.getString(index)+"\t");
System.out.println();
}
} static void insertDemo(Connection conn,int rowcount,int batchcount) throws SQLException
{
String sql="insert into mytest(key,value) values(?,?)";
PreparedStatement stmt = conn.prepareStatement(sql); for(int i=1;i<=rowcount;i++)
{
stmt.setString(1,"Key"+i);
stmt.setString(2,"Value"+i+" "+Thread.currentThread().getName());
stmt.addBatch();
if(i % batchcount == 0)
stmt.executeBatch();
}
stmt.executeBatch();
} }
Oracle Jdbc demo的更多相关文章
- Java jdbc访问sqlserver,oracle数据库 DEMO
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
- Ignite 配置更新Oracle JDBC Drive
如果使用Oracle 12C 作为Ignite 的Repository的话,在Repository Createion Wizard的配置过程中,会出现ORA-28040:No matc ...
- 高性能 Oracle JDBC 编程
了解如何利用连接和语句池特性来提高 Oracle 驱动的 JDBC 程序的性能.作者:Yuli Vasiliev2009 年 4 月发布使用诸如连接池和语句池等池技术可以显著提高数据库密集型应用程序的 ...
- java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 错误的解决办法
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 错误的解决办法 (2011-05-05 16:08:05) 转载▼ ...
- mysql和oracle jdbc连接
加载驱动. Class.forName("oracle.jdbc.driver.OracleDriver"); 1 创建连接. Connection con = DriverMan ...
- Eclipse中启用Oracle jdbc logging
根据自己用的JRE版本, jre1.5选择ojdbc5_g.jar, jre6选择ojdbc6_g.jar, 只有带_g的dirver才输出debug信息. maven 的配置信息: <depe ...
- 在MAVEN仓库中添加ORACLE JDBC驱动
本文转载自 http://www.cnblogs.com/leiOOlei/archive/2013/10/21/3380568.html 因为已经是第二次遇到,所以COPY过来,怕以后别人的BLOG ...
- 连接oracle jdbc
我使用的是精简版的oracle. 1 导入oracle驱动包 oracle下路径 D:\oracle\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6 ...
- maven oracle jdbc jar
1.problem describe: when your dependency jar about oracle use code like this: <!-- oracle-connect ...
随机推荐
- 【C#进阶系列】01 CLR的执行模型——一个Hello World的故事
好吧,废话少说,先上一章Hello World图: 我们有了一个Hello world程序,如此之简单,再加上我今天没有用汉字编程o(>﹏<)o,所以一切很简单明了. 故事开始: 编译: ...
- 清除浮动after
.clearf{display: inline-block;} .clearf:after { content: "."; display: block; height:; cle ...
- 安装性能测试工具:sysbench和使用apache的ab
一.软件的用途,它主要包括以下几种方式的测试:1.cpu性能2.磁盘io性能3.调度程序性能4.内存分配及传输速度5.POSIX线程性能6.数据库性能(OLTP基准测试) 这个软件为什么找不到官网呢? ...
- couchbase单向同步
我们知道,couchbase默认情况下就是N主的HA模式,bucket同时存储在多个节点中.如下所示: 但事实上,有些时候我们希望某些节点只能读,不能写以避免各种副作用以及分布式系统下出于管理和安全性 ...
- C#中List<T>对象的深度拷贝问题
一.List<T>对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List<T&g ...
- jQuery实现图片伦播效果(淡入淡出+左右切换)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 数码管问题(c++实现)
描述:液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划都称为一笔,即7有3笔,8有7笔等.对于十个数字一种排列,要做到 两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减. ...
- Microsoft Dynamics CRM 2013 CD-KEY
Microsoft Dynamics CRM Workgroup Server 2013 (5 CAL limit):NX77Y-BTBCV-JP3T3-8W7JH-94QJP Microsoft D ...
- 我的GTD中收集的书单
在几年的GTD过程中,收集了一些想读的书目,没有系统地整理,每当读完一本之后,就翻翻书单,寻找下一本感兴趣的书,书是不可能读完的,只能找有兴趣的.符合自己目标方向的.有些书记录了豆瓣上的评分,虽然不是 ...
- oracle断电重启之ORA-01033和ORA-01172
参考文献: ORA-01033:解决方法 数据库掉电后 ORA-01172 磁盘坏块解决方法 --尝试连接数据库prjdb C:\Documents and Settings\Administrato ...