- 浏览: 1139312 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (240)
- javascript (24)
- Struts (3)
- Hibernate (9)
- spring (3)
- 学海无涯 (45)
- jstl (4)
- java (21)
- js (4)
- Ajax (2)
- 开源框架-ajax (1)
- oracle spring (38)
- unix (6)
- 美国骆驼 American Camel 骆驼皮鞋 骆驼正品 (0)
- android (1)
- BIEE (16)
- informatica (13)
- 触摸屏 (1)
- 诈×骗×电话 (4)
- 远程桌面无法连接 (1)
- 旅游 (3)
- 生活 (8)
- hp6531s (2)
- oracle (6)
- 短信病毒 (1)
- 手机诈骗 短信病毒 (3)
- 骗子 (3)
- ultraedit (1)
- sql2008 (0)
- 苏宁易购大骗子 苏宁易购二手当新品卖 苏宁易购以次充好 苏宁易购您还敢下单吗 (0)
- 苏宁易购二手当新品卖 (0)
- informatica etl (5)
- etl (8)
- NoClassDefFoundError: com/opensymphony/xwork2/util/classloader/ReloadingClas (1)
- mysql (2)
- jquery ajax post (1)
- jason (1)
- json (1)
- struts2 (1)
- jsp 文本编辑器 (2)
- beyond compare (1)
- svn (3)
- EAS BOS (3)
- tapestry5 (1)
- obiee (3)
- java dll (2)
- office (1)
- kettle 8.2 org.gjt.mm.mysql.Driver (1)
最新评论
-
JianCaesar:
oracleStr2Clob,为什么要用反射,直接调用不可以吗 ...
java String和Clob转换 -
vip_gg:
...
邮件失败!javax.mail.AuthenticationFailedException: 535 Error: authentication -
cherryQQ:
我把敏感的用*号代替啦,这样可以了吧,等你加一个号,等着租房子 ...
**同城租房需要加房东的微*号 -
sam.sheng.3:
dream80 写道是的,这个主要就是二步验证的问题,很多人不 ...
AttributeError: can't set attribute -
ooo456mmm:
不错
oracle job 定时执行 存储过程
1、建立连接
这个是一切连接数据库的基础,当然这个也比较简单。
一下是一个连接Sql2000的数据库程序,还有一个显示一个表的方法。
import java.*;
public class ConnectData{
private java.sql.Connection con = null;
private java.sql.Statement stmt=null;
private final String url = "jdbc:microsoft:sqlserver://";
private final String serverName= "192.168.0.100";
private final String portNumber = "1433";
private final String databaseName= "hkmis"; //数据库名称
//mydata是手动建的数据库
private final String userName = "hkmisuser";
private final String password = "hkmis123456";
public ConnectData(){}
private String getConnectionUrl(){
return url+serverName+":"+portNumber+";databaseName="+databaseName+";";
}
private java.sql.Connection getConnection(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
if(con!=null) System.out.println("Connection Successful!");
}catch(Exception e){
e.printStackTrace();
System.out.println("Error Trace in getConnection() : " + e.getMessage());
}
return con;
}
/*
用于显示一个表
*/
public void displayData(){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
if(con!=null){
stmt=con.createStatement();
rs=stmt.executeQuery("select * from userinfo");
//userinfo是mydata中的用户信息表(username,password)
while(rs.next()){
System.out.println( rs.getString("username")); //显示所有用户
//System.out.println( rs.getString(2));
//System.out.println( rs.getString(3));
}
rs.close(); //这里一定要记得关闭顺序
//先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection
rs = null;
closeConnection();
}else System.out.println("Error: No active Connection");
}catch(Exception e){
e.printStackTrace();
}
}
private void closeConnection(){
try{
if(con!=null)
con.close();
con=null;
}catch(Exception e){
e.printStackTrace();
}
}
//执行测试。。。
public static void main(String[] args) throws Exception
{
ConnectData myDbTest = new ConnectData();
myDbTest.displayData();
}
}
这里要强调的是,不同的数据库除了使用的Driver不同之外,连接的方式也是不同的,例如,mysql最好加上字体参数,以免出现乱码。而oracle就不需要规定数据库名称。
2、执行sql语句
1)用Statement来执行sql语句
String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // 执行数据查询语句(select)
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close();
2)用PreparedStatement来执行sql语句
String sql;
sql = "insert into user (id,name) values (?,?)";
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
...
ResultSet rs = ps.executeQuery(); // 查询
int c = ps.executeUpdate(); // 更新
3、处理执行结果
查询语句,返回记录集ResultSet
更新语句,返回数字,表示该更新影响的记录数
ResultSet的方法
1、next(),将游标往后移动一行,如果成功返回true;否则返回false
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值
4、释放连接
cn.close();
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection
可滚动、更新的记录集
1、创建可滚动、更新的Statement
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);
该Statement取得的ResultSet就是可滚动的
2、创建PreparedStatement时指定参数
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet.absolute(9000);
·批量更新,这个非常重要,是多Sql语句结合体的方法。
1、Statement
Statement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
...
sm.executeBatch()
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有
2、PreparedStatement
PreparedStatement ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
...
ps.addBatch();
}
ps.executeBatch(); 一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。 ·事务的处理
1、关闭Connection的自动提交,这在oracle中效果非常明显。
cn.setAutoCommit(false);
2、执行一系列sql语句
要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close
Statement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();
sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();
3、提交
cn.commit();
4、如果发生异常,那么回滚。例如发现插入不完整时候,都应该回滚保证数据的完整性。
cn.rollback();
这个是一切连接数据库的基础,当然这个也比较简单。
一下是一个连接Sql2000的数据库程序,还有一个显示一个表的方法。
import java.*;
public class ConnectData{
private java.sql.Connection con = null;
private java.sql.Statement stmt=null;
private final String url = "jdbc:microsoft:sqlserver://";
private final String serverName= "192.168.0.100";
private final String portNumber = "1433";
private final String databaseName= "hkmis"; //数据库名称
//mydata是手动建的数据库
private final String userName = "hkmisuser";
private final String password = "hkmis123456";
public ConnectData(){}
private String getConnectionUrl(){
return url+serverName+":"+portNumber+";databaseName="+databaseName+";";
}
private java.sql.Connection getConnection(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
if(con!=null) System.out.println("Connection Successful!");
}catch(Exception e){
e.printStackTrace();
System.out.println("Error Trace in getConnection() : " + e.getMessage());
}
return con;
}
/*
用于显示一个表
*/
public void displayData(){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
if(con!=null){
stmt=con.createStatement();
rs=stmt.executeQuery("select * from userinfo");
//userinfo是mydata中的用户信息表(username,password)
while(rs.next()){
System.out.println( rs.getString("username")); //显示所有用户
//System.out.println( rs.getString(2));
//System.out.println( rs.getString(3));
}
rs.close(); //这里一定要记得关闭顺序
//先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection
rs = null;
closeConnection();
}else System.out.println("Error: No active Connection");
}catch(Exception e){
e.printStackTrace();
}
}
private void closeConnection(){
try{
if(con!=null)
con.close();
con=null;
}catch(Exception e){
e.printStackTrace();
}
}
//执行测试。。。
public static void main(String[] args) throws Exception
{
ConnectData myDbTest = new ConnectData();
myDbTest.displayData();
}
}
这里要强调的是,不同的数据库除了使用的Driver不同之外,连接的方式也是不同的,例如,mysql最好加上字体参数,以免出现乱码。而oracle就不需要规定数据库名称。
2、执行sql语句
1)用Statement来执行sql语句
String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // 执行数据查询语句(select)
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close();
2)用PreparedStatement来执行sql语句
String sql;
sql = "insert into user (id,name) values (?,?)";
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
...
ResultSet rs = ps.executeQuery(); // 查询
int c = ps.executeUpdate(); // 更新
3、处理执行结果
查询语句,返回记录集ResultSet
更新语句,返回数字,表示该更新影响的记录数
ResultSet的方法
1、next(),将游标往后移动一行,如果成功返回true;否则返回false
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值
4、释放连接
cn.close();
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection
可滚动、更新的记录集
1、创建可滚动、更新的Statement
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);
该Statement取得的ResultSet就是可滚动的
2、创建PreparedStatement时指定参数
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet.absolute(9000);
·批量更新,这个非常重要,是多Sql语句结合体的方法。
1、Statement
Statement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
...
sm.executeBatch()
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有
2、PreparedStatement
PreparedStatement ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
...
ps.addBatch();
}
ps.executeBatch(); 一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。 ·事务的处理
1、关闭Connection的自动提交,这在oracle中效果非常明显。
cn.setAutoCommit(false);
2、执行一系列sql语句
要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close
Statement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();
sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();
3、提交
cn.commit();
4、如果发生异常,那么回滚。例如发现插入不完整时候,都应该回滚保证数据的完整性。
cn.rollback();
发表评论
-
您的电子密码器将于次日失效
2015-03-16 20:07 832今天收到一条短信 :发信息的是 95588 本 ... -
The capacity of each mail box should not exceed 2G foxmail本地邮箱满 foxmail本机邮箱满
2012-12-04 09:25 7158Foxmail客户端文件in.box和trash.box 超过 ... -
AttributeError: can't set attribute
2012-11-17 09:23 24558上次goAgent报错:AttributeError 按照b ... -
清源山 泉州清源山 清源山小路 清源山摩的 清源山摩的带路不靠谱
2012-11-05 12:44 1911清源山 泉州清源山 清源山小路 清源山摩的 清源山摩 ... -
-ERR [AUTH] Application-specific password required: http://support.google.co
2012-11-01 14:11 5225<!-- [if gte mso 9]><x ... -
不欠费销号也要缴保证金有么有 青海移动霸王条款 青海移动开户容易销户难,情何以堪啊
2012-07-18 14:00 1621由于来青海西宁长期出差,顺便就办了个青海移动的号码 ... -
您有一份快件已到达因地址不详细无法派送成功 骗人新招 小心中招
2012-06-08 10:05 3253一天前购买了一样东西 ,使用的是中国邮政,第二天就收 ... -
京东商城不要贪吃没有质量保障的服装这一笔羹毁掉了京东这个品牌
2012-05-22 09:41 1505前几天在京东商场买啦7条小内裤发现,同样均码的小内 在 ... -
NOKIA 手机旺旺 nokia 5230手机旺旺 手机旺旺软件下载
2011-11-14 11:27 1390塞班系统的手机客户,只要使用java 版本的手机 ... -
NOKIA 5230如何删除安装的软件
2011-11-13 23:06 1289今天安装啦一个塞班的(水果忍者)手机游戏,很垃圾,但是就是 ... -
无法打开internet站点,ie无法打开站点的解决方法【图解】
2011-10-27 16:07 3227无法打开internet站点 , ie无 ... -
02061178400 骚扰电话大家小心啊
2011-10-24 11:31 184402061178400 骚扰电话大家小心啊 ... -
做淘宝真的很辛苦哈,现在深有体会
2011-10-14 23:21 4美国骆驼 American Camel 骆驼皮鞋 骆驼正品 ... -
美国骆驼 American Camel 骆驼皮鞋 骆驼正品
2011-10-14 00:29 24今天新开通啦淘宝店铺:http://mycamel. ... -
来到渔具店里,发现我真的out啦
2011-06-10 18:13 1126来到渔具店里,发现我真的out啦 自从上完 ... -
如何安装惠普单个键盘
2011-05-23 10:39 1733刚刚换啦一个笔记本键盘 没有两天就掉了一个B 键盘盖子 ,怎么 ... -
NOKIA 5230安装QQ软件
2011-05-08 18:03 1232先把下载的QQ软件拷贝到存储卡里面新建一个文件夹,然后 功能 ... -
由于没有安装音量控制程序,Windows 无法在任务栏上显示音量控制
2010-11-30 18:54 14341、打开我的电脑 工具 文件夹选项 查看 隐藏已知文件类型 ... -
支付宝控件安装失败
2010-11-11 19:23 1410重新安装操作系统后,发现淘宝里面的支付宝控件安装失败,最 ... -
凡客一次不愉快的购物
2010-10-22 10:44 11572010-10-17在凡客购买衣服,18日开始发货,直到今天还 ...
相关推荐
在Java中,批量插入数据到Oracle数据库主要依赖于`PreparedStatement`对象,该对象允许我们预编译SQL语句并多次执行,从而提高效率。相比于单条插入,批量插入减少了网络往返次数,提高了整体的吞吐量。 ### 二、...
在Oracle数据库中,Blob类型用于存储大量的二进制数据...总之,批量插入大字段是处理大量Blob数据的关键策略,通过JDBC提供的批处理功能,结合合理的事务管理和内存管理,可以显著提升Oracle数据库中的大数据插入效率。
在数据库层面,MySQL、PostgreSQL、Oracle等都支持批量插入。例如,在SQL中,你可以使用以下语法: ```sql INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...), (value1, value2, .....
本话题聚焦于如何批量导入图片到Oracle数据库,这是一种常见的需求,特别是在处理大量图像数据的项目中。Oracle数据库作为一款强大的关系型数据库管理系统,支持多种类型的数据存储,包括BLOB(Binary Large Object...
首先,批量插入数据通常涉及到PreparedStatement对象的使用。PreparedStatement是Statement的子类,它允许预编译SQL语句,从而提高执行效率。以下是一个简单的批量插入示例: ```java String sql = "INSERT INTO ...
- **性能优化**:通过设置JDBC属性,如批量插入、预编译语句、连接池管理等,可以提升性能。 - **异常处理**:在使用JDBC进行数据库操作时,要妥善处理SQLException和其他可能抛出的异常。 - **事务管理**:JDBC...
Oracle数据库提供了一些高级数据类型,如ARRAY(数组)和TABLE(表),这些数据类型允许我们进行批量数据操作,从而提高性能。本文将深入探讨如何利用Java操作Oracle数据库中的ARRAY和TABLE类型,实现批量入库。 ...
使用JDBC连接Oracle数据库的基本步骤包括:加载驱动、创建Connection对象、预编译Statement或PreparedStatement对象、执行SQL语句和关闭资源。例如: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); ...
- 在批量插入时,使用合适的事务粒度能确保数据的一致性。例如,可以将一定数量的插入操作作为一个事务,如果出现错误,回滚整个事务。 - 考虑设置合适的隔离级别,如READ COMMITTED或SERIALIZABLE,以适应并发...
6. **批量操作**:当有大量数据要插入或更新时,使用预编译的PreparedStatement的`addBatch()`和`executeBatch()`方法可以提高效率。 7. **错误处理**:处理SQLException,这可能由于网络问题、数据库无响应或无效...
8. **批处理**:PreparedStatement的addBatch()和executeBatch()方法用于批量执行SQL语句,可以显著提高插入、更新和删除操作的效率。 9. **连接池**:为了提高性能和资源利用率,应用通常使用连接池(如C3P0、...
5. 编写SQL的INSERT语句,批量插入数据,可能使用批处理操作以提高效率。 6. 处理事务,确保所有数据都被正确导入,或者在发生错误时能够回滚。 7. 最后,关闭数据库连接和文件流,释放资源。 在实际应用中,还需要...
这种方式尤其适用于大量数据的批量插入或更新场景。 #### 技巧六:高效处理大型二进制对象(LOB) Oracle数据库支持存储大型二进制对象(LOB),如BLOB和CLOB等。使用`OraclePreparedStatement`时,可以方便地设置...
- **批处理**:批量执行SQL插入或更新,提高性能。 - **游标**:支持游标,可以实现复杂的数据处理逻辑,例如逐行处理大结果集。 - **预编译语句**:使用PreparedStatement可以防止SQL注入,提高执行效率。 - **...
- 使用`PreparedStatement`来插入图片数据,因为预编译的SQL语句可以防止SQL注入攻击,并且通常比`Statement`更高效。 - `PreparedStatement`中的`setInt()`方法设置id值,`setBinaryStream()`方法用于将文件流...
6. **高级特性**:Oracle JDBC驱动还支持存储过程调用、批量操作、游标查询、分布式事务等高级功能。例如,使用`CallableStatement`可以调用Oracle的存储过程,通过`addBatch()`和`executeBatch()`实现批处理,提高...
- 常见的SQL语句包括:SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除) - WHERE子句用于筛选记录,ORDER BY用于排序,GROUP BY用于分组,HAVING用于筛选分组后的数据。 6. **JDBC优化** - 使用...
对于批量插入或更新操作,JDBC提供了BatchUpdateException和addBatch()方法,可以提高效率。 总结,JDBC驱动是Java与SQLserver、Oracle、MySQL等数据库通信的关键组件。理解JDBC的工作原理,掌握其核心API的使用,...
5. **处理结果集并批量插入Oracle**: 遍历`ResultSet`,将每条数据封装为合适的对象(如自定义的JavaBean)。由于Oracle支持批处理,我们可以创建一个批处理命令列表,每处理一条数据就添加一个`ADD批处理`的调用...
OCCI支持批量执行SQL语句,对于插入大量数据或执行相似操作时,可以显著提高效率。 6. **游标和绑定**: 游标(Cursor)允许程序动态地处理查询结果,而绑定(Binding)则可以将程序变量与SQL语句中的参数关联...