JDBC进阶
来源:互联网 发布:sql where and 编辑:程序博客网 时间:2024/05/22 05:15
JDBC进阶使用技巧
1.PreparedStatement-灵活指定SQL语句中的变量
为了解决Statement构建sql语句中容易出错的参数传递问题,可以使用PreparedStatement来传递参数
pstmt = conn.prepareStatement("insert into dept2 vaules(?, ?, ?)");pstmt.setInt(1, deptno);pstmt.setString(2, dname);pstmt.setString(3, loc);pstmt.executeUpdate();
?表示占位符,用set***(1,**)表示向某个位置传递哪个参数。
2.CallableStatement-处理存储过程
Class.forName("oracle.jdbc.driver.OracleDriver");Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");CallableStatement cstmt = conn.prepareCall("{call p(?, ?, ?, ?)}");cstmt.registerOutParameter(3, Types.INTEGER);cstmt.registerOutParameter(4, Types.INTEGER);cstmt.setInt(1, 3);cstmt.setInt(2, 4);cstmt.setInt(4, 5);cstmt.execute();System.out.println(cstmt.getInt(3));System.out.println(cstmt.getInt(4));cstmt.close();conn.close();
3.批处理
import java.sql.*;public class TestBatch {public static void main(String[] args) throws Exception {Class.forName("oracle.jdbc.driver.OracleDriver");Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");/*Statement stmt = conn.createStatement();stmt.addBatch("insert into dept2 values (51, '500', 'haha')");stmt.addBatch("insert into dept2 values (52, '500', 'haha')");stmt.addBatch("insert into dept2 values (53, '500', 'haha')");stmt.executeBatch();stmt.close();*/PreparedStatement ps = conn.prepareStatement("insert into dept2 values (?, ?, ?)");ps.setInt(1, 61);ps.setString(2, "haha");ps.setString(3, "bj");ps.addBatch();ps.setInt(1, 62);ps.setString(2, "haha");ps.setString(3, "bj");ps.addBatch();ps.setInt(1, 63);ps.setString(2, "haha");ps.setString(3, "bj");ps.addBatch();ps.executeBatch();ps.close();conn.close();}}
4.事务处理
注意要恢复现场
import java.sql.*;public class TestTransaction {public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SXT", "scott", "tiger");conn.setAutoCommit(false);stmt = conn.createStatement();stmt.addBatch("insert into dept2 values (51, '500', 'haha')");stmt.addBatch("insert into dept2 values (52, '500', 'haha')");stmt.addBatch("insert into dept2 values (53, '500', 'haha')");stmt.executeBatch();conn.commit();conn.setAutoCommit(true);} catch (ClassNotFoundException e) {e.printStackTrace();} catch(SQLException e) {e.printStackTrace();try {if(conn != null){conn.rollback();conn.setAutoCommit(true);}} catch (SQLException e1) {e1.printStackTrace();}}finally {try {if(stmt != null)stmt.close();if(conn != null)conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
阅读全文
0 0
- JDBC进阶
- jdbc进阶
- JDBC进阶
- JDBC进阶
- JDBC进阶(SXT)
- JDBC 进阶版
- JDBC进阶功能
- Java进阶之JDBC
- JDBC进阶 + 数据源
- JDBC进阶功能
- JDBC进阶功能2
- mule进阶之jdbc transport
- mule进阶之jdbc transport:
- JDBC进阶之批处理 Batch
- Java进阶(一)JDBC
- JDBC进阶版本(JDBCVersion2)
- JDBC从瞎搞到进阶
- JDBC进阶之存储过程+CallableStatement
- C# const, readonly, static readonly
- 如何优雅的使用Retrofit、Rxjava、Butterknife、Material开发一款MVP模式的新闻+天气预报+妹子的Android app
- 第八章课后作业
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
- 学习淘淘商城终结篇(系统部署演示)
- JDBC进阶
- Linux安装jdk及安装路径选择
- linux下配置nginx
- NYOJ题目6 喷水装置(一)
- SpringMVC入门
- POI 的全部操作大全
- python字符串语法
- C++11新标准constexpr关键字
- JS获取上一访问页面URL地址——(上)