`
argel_lj
  • 浏览: 364919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC复习

阅读更多

 

一,JDBC的编程步骤:   --学自尚学堂

1.Load the Driver,向DriverManager注册
①.Class.forName(“该Driver的名字”)或者是Class.forName(“该Driver的名字”).newInstance()或者直接new这个Driver
②.实例化时自动向DriverManager注册,不需要再调用DriverManager.registerDriver方法

2.Connect to the DataBase
①.DriverManager.getConnec()

3.Excute the SQL
①.Connection.CreateStatem()
②.Statement.executeQuery()
③.Statement.executeUpdate()

4.Retrieve the result data      Retrieve (检索储存的信息)
①.循环取得结果 while(rs.next())

5.Show the result data
①.将数据库中的各种类型转换为java中的类型,用get方法

6.Close   (后打开的先关)
①.close the ResultSet
②.close the Statement
③.close the Connection

二,Oracle的连接字符串

    Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@主机IP:1521:所要连接的数据库的SID","scott","tiger");


一个连接的Format

 

 

 

 

public static void main(String[] args) {
Connection conn = null;
try {
//向DriverManager注册
Class.forName("oracle.jdbc.driver.OracleDriver");
    //从DriverManager获得连接
    conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.210:1521:orcl","scott","tiger");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//最后关闭连接
if (conn != null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

三,执行查询SQL时的Format

 

 

 

 

public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.210:1521:orcl","scott","tiger");
//创建Statement,然后通过Statement的executeQuery(sql)方法执行查询语句,并把结果返回到ResultSet结果集中
    stmt = conn.createStatement();
String sql = "select * from dept";
rs = stmt.executeQuery(sql);
    while (rs.next()){
System.out.println(rs.getInt("deptno"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//最后关闭所有资源,后打开的先关,关闭后赋值为null是为了让垃圾收集器尽快释放内存
try {
if (rs != null){
rs.close();
rs = null;
}
if (stmt != null){
stmt.close();
stmt = null;
}
if (conn != null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

四,执行insert,update等对表进行改动的SQL时的Format

public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.210:1521:orcl","scott","tiger");
//建立prepareStatement,通过prepareStatement的executeUpdate方法执行SQL语句?是占位符,这样写SQL就更方便,避免了单引号的问题
    pstmt = conn.prepareStatement("insert into dept2 values (?,?,?)");
pstmt.setInt(1, 50);
pstmt.setString(2, "GAME");
pstmt.setString(3, "BEIJING");
pstmt.executeUpdate();

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null){
rs.close();
rs = null;
}
if (stmt != null){
stmt.close();
stmt = null;
}
if (conn != null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

五,调用PLSQL时的Format

① 先建立一个Stored Procedure

create or replace procedure p
(v_a in number, v_b number, v_return out number, v_temp in out number)
is
begin
if (v_a > v_b) then
v_return := v_a;
else
v_return := v_b;
end if;
v_temp := v_temp + 1;
end;


② java中的写法

public static void main(String[] args) {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.210:1521:orcl", "scott", "tiger");
//建立一个CallableStatement ,然后通过CallableStatement 的execute方法来执行PLSQL
    CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
cstmt.setInt(1, 13);
cstmt.setInt(2, 45);
cstmt.setInt(4, 9);
cstmt.execute();

System.out.println(cstmt.getInt(3));
System.out.println(cstmt.getInt(4));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

六,在JDBC中处理Batch

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:@192.168.1.210:1521:orcl", "scott", "tiger");
stmt = conn.createStatement();
//用Statement的addBatch方法把各个SQL语句添加进去,然后在调用executeBatch语句执行这些SQL语句
    stmt.addBatch("insert into dept2 values(51,'lit1','tokyo')");
stmt.addBatch("insert into dept2 values(52,'lit2','tokyo')");
stmt.addBatch("insert into dept2 values(53,'lit3','tokyo')");
stmt.executeBatch();
   } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null){
conn.close();
conn = null;
}
} catch (SQLException e){
e.printStackTrace();
}
}
}

public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.210:1521:orcl", "scott", "tiger");
pstmt = conn.prepareStatement("insert into dept2 values(?,?,?)");
//调用PreparedStatement 的addBatch加入各种SQL语句,然后调用executeBatch方法执行这些SQL语句
pstmt.setInt(1, 61);
pstmt.setString(2, "lit1");
pstmt.setString(3, "okayama");
pstmt.addBatch();
pstmt.setInt(1, 62);
pstmt.setString(2, "lit2");
pstmt.setString(3, "okayama");
pstmt.addBatch();
pstmt.setInt(1, 63);
pstmt.setString(2, "lit3");
pstmt.setString(3, "okayama");
pstmt.addBatch();
pstmt.executeBatch();
   } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
conn = null;
}
if (pstmt != null) {
pstmt.close();
pstmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

七,JDBC中的事物处理,transaction,(就是关于commit)

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:@192.168.1.210:1521:orcl", "scott", "tiger");
stmt = conn.createStatement();
   //首先用Connection中的setAutoCommit方法将自动commit设为false,因为JDBC默认是自动commit,执行完所要执行的语句块后再用Connection的commit方法提交,完成后setAutoCommit(true),恢复JDBC的默认设置
conn.setAutoCommit(false);
    stmt.addBatch("insert into dept2 values(41,'lit1','tokyo')");
stmt.addBatch("insert into dept2 values(42,'lit2','tokyo')");
stmt.addBatch("insert into dept2 values(43,'lit3','tokyo')");
stmt.executeBatch();
conn.commit();
conn.setAutoCommit(true);
   } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
//捕捉到任何的SQLException立刻rollback,然后恢复JDBC的默认设置
   try {
if(conn != null) {
conn.rollback();
conn.setAutoCommit(true);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
   } finally {
try {
if (conn != null){
conn.close();
conn = null;
}
} catch (SQLException e){
e.printStackTrace();
}
}
}

转自 http://hi.baidu.com/ahuzl/blog/item/c3b900d10a02a987a0ec9cce.html

分享到:
评论

相关推荐

    JDBC复习导图,自制复习资料

    JDBC复习导图,自制复习资料

    jdbc 学习 笔记 代码例子1

    jdbc学习用笔记和代码例子jdbc学习用笔记和代码例子jdbc学习用笔记和代码例子

    JDBC动力节点老杜的精华,用于复习回顾

    JDBC动力节点老杜的精华,用于复习回顾

    java各种笔记.zip

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。"java各种笔记.zip"这个压缩包文件很可能包含了关于Java学习的各种资料,如笔记、教程、代码示例等,旨在帮助学习者深入理解Java...

    java复习题,jdbc,DAO模式,oracle复习题

    在复习JDBC时,会涉及到连接池的使用,事务管理,以及预编译SQL语句以提高性能。 DAO模式是软件设计中的一个重要概念。它通过将数据访问逻辑封装到专门的对象中,使得业务逻辑代码与数据存储细节分离。在实际应用中...

    Java JDBC由浅入深.pdf

    当今 orm 等全自动针对对象持久化的框架越来越...分清楚,所以就啰理啰嗦的整理出一份学习笔记,第一作为自己对 jdbc 重新的复习, 第二如果有可能希望给初学 jdbc 的朋友带来一定的便利,这样也不枉我点点滴滴的记 录

    JDBC DAO模式 (复习)

    DAO JDBC 模式

    JDBC实验手册.doc

    本实验手册旨在帮助学生巩固 Java 语言,复习 Java 图形化用户界面的开发过程和主要技术,学习数据库编程,了解 Java 数据库编程机制,能够利用 JDBC 开发实用的数据库应用程序。 知识点一:JDBC 概念 JDBC(Java ...

    2022年自考互联网数据库知识点复习:JDBC.docx

    JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的一套标准API,它为Java程序员提供了一种与各种数据库交互的能力,无论数据库管理系统是何种类型。JDBC的核心理念在于提供一种统一的接口,使得...

    达内学习用的jdbc与struts笔记.pdf

    1. Struts复习 - 第一天:可能涵盖了Struts的基本概念,如MVC模式、Struts架构、配置文件(struts-config.xml)等。 - 第二天:可能深入讲解了Action类、Form Beans、ActionMapping和ActionForward等关键概念。 -...

    JSP之JDBC数据库开发

    在【实验目的】中,学习者需要复习数据库操作的基础知识,并通过JDBC实践数据库的增删改查(CRUD)操作。同时,掌握JSP和JavaBean模式的联合使用,这是Java Web开发中常见的设计模式,其中JavaBean作为业务逻辑组件...

    传智播客 李勇老师 JDBC代码全部和ppt

    同时,"所有源码与ppt"的提供,意味着学习者不仅可以观看视频,还能直接查看和实践配套的代码,加深对理论知识的理解,同时通过PPT可以系统地复习和整理课程内容。 【标签】"传智播客 李勇 JDBC代码 ppt"进一步明确...

    javaJDBC.rar_jdbc

    综合以上内容,这个压缩包中的资源应该可以帮助初学者了解并实践Java通过JDBC进行数据库操作的基本步骤和技巧,同时对于有经验的开发者来说,也是复习和查找示例的好资料。通过阅读和理解这些示例代码,可以加深对...

    2.2-JDBC思维导图 .emmx

    大数据学习之第二阶段Hadoop(第二篇)--JDBC思维导图+复习知识点总结

    JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht

    JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mhtJSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht

    java语言程序设计 进阶版 第十版 复习题答案

    10. **JDBC数据库连接**:Java Database Connectivity (JDBC) API用于连接和操作数据库。复习题可能涵盖数据库连接、执行SQL查询、处理结果集,以及事务管理。 通过这些复习题,学习者不仅可以加深对Java语言核心...

    Java JDBC由浅入深

    当今orm等全自动针对对象持久化的框架越来越多并且也越来越...所以就啰理啰嗦的整理出一份学习笔记,第一作为自己对jdbc重新的复习,第二如果有可能希望给初学jdbc的朋友带来一定的便利,这样也不枉我点点滴滴的记录。

    JDBC中文笔记.zip

    8. **复习与学习路径** 学习JDBC时,应掌握基础的数据库概念,如表、视图、索引。理解SQL语言,特别是DML(数据操纵语言)和DQL(数据查询语言)。熟悉JDBC API的使用,以及事务处理和错误处理策略。最后,实践是...

    J2EE考试复习材料

    以下是J2EE考试复习材料的总结,涵盖了J2EE的基本概念、WEB容器、Session和Application、JavaBean、JSP、JDBC等方面的知识点。 一、Tomcat缺省端口 Tomcat是Apache软件基金会下属的一个开源的WEB服务器软件,常...

    JAVA书本复习题答案整合

    10. **JDBC数据库操作**:Java通过JDBC可以连接和操作各种关系数据库。复习题可能涵盖连接数据库、执行SQL语句、处理结果集等,帮助你掌握数据库交互的基本技巧。 通过这个压缩包中的复习题和答案,你可以有针对性...

Global site tag (gtag.js) - Google Analytics