你的位置:首页 > Java教程

[Java教程]Java——JDBC小结


---恢复内容开始---

1.首先说明什么是JDBC
在第一眼看到这个名词之前,我觉得有必要知道它的英文全称是什么,Java Database Connectivity,从英文字面上理解就直译为
可连通的Java数据库,说白了也就是想提供一套中间环节,去连接Java代码与数据库,使之可以直接通过操作Java代码就可以控制数据库。

2.JDBC的实质
它是Java访问数据库的解决方案,希望能过用同样的方式访问不同的数据库,以达到实现与具体数据库无关的Java操作界面。
JDBC实质上就是就是一套标准化的接口,不同的数据库厂商根据自己的数据库特点去实现这套接口,实现的具体方法无需我们去关心。

JDBC中数据库厂商实现的主要接口如下:


DriverManager :驱动管理

Connection、
DatabaseMetaData :连接接口

Statement、
PreparedStatement
CallableStatement: 语句对象接口

ResultSet、
ResultSetMetaData: 结果集接口

3.JDBC的工作原理
程序员调用的是底层数据库厂商实现的部分,
即:1)通过Connection 接口实现第一步的连接
2)通过Statement结果传送sql语句
3)数据库返回结果保存到ResultSet结果集合接口中
主要流程可归纳为:

1)加载驱动,创建连接

2)创建语句对象

3)执行SQL语句

4)发回结果集

5)关闭连接

下面我以我学的oracle数据库配合eclips为例逐步阐述一下如何实现JDBC

1)加载驱动

使用的方法为:Class.forName(“驱动”);

对于如何获得到这个驱动,我所知道的方法是:展开JDBC的jar包,如我使用的是ojdbc6.jar,在里面找到oracle.jdbc.driver,在里面再找到OracleDriver然后鼠标右键点qualitycopy,粘贴到引号之中即可,如:Class.forName("oracle.jdbc.driver.OracleDriver");

2)创建连接

使用的方法为: conn=DriverManager.getConnection(“jdbc:oracle:thin:@IP地址:1521:orcl","数据库账号","数据库密码”);

如:conn=DriverManager.getConnection("jdbc:oracle:thin:@172.16.3.8:1521:orcl","jsd1601","jsd1601");

3)创建语句对象

使用的方法为:Statement stmt=conn.createStatement();

需要注意的是,使用的是第二步上面创建出来的连接去调用方法

调用executeUpdate方法将sql语句传入其中即可执行所写的sql语句,这里需要注意的是,executeUpdate方法能执行的sql种类为insert,update,delete

如:      Statement stmt=conn.createStatement();
            String sql="insert into emp_jiawenzhe(empno,ename,sal,deptno) values(1000,'贾文哲',1500,10)";
            int i=stmt.executeUpdate(sql);

这里面的返回值i就是受影响的行数,我们可以根据这个受影响的行数来判断是否操作成功

4)而对于返回的结果集主要是指进行select操作(这里暂不提)

5)最后关闭连接

如:conn.close();

列举一整体代码,包括注释:

 1 package jdbc_day01; 2 import java.sql.*; 3 /** 4  * 演示JDBC的操作步骤 5  * 1、加载驱动程序 6  * 2、创建连接 7  * 3、创建语句对象 8  * 4、发送SQL语句 9  * 5、如果发送的是select语句,处理结果集10  * 6、关闭连接11  * @author jiawenzhe12  *13 */14 public class JDBCDome01 {15   public static void main(String[] args) throws SQLException {16     //需求:创建一个员工,员工号,员工名,工资,部门号17     //1、18     Connection conn=null;19     try {20       Class.forName("oracle.jdbc.driver.OracleDriver");21       System.out.println("驱动加载成功");22       //2、23       conn=24   DriverManager.getConnection("jdbc:oracle:thin:@172.16.3.8:1521:orcl","jsd1601","jsd1601");25       System.out.println(conn.getClass().getName());26       //3、27       //Statment 语句对象。发送并执行SQL语句28       /*29        * int excuteUpdate(String sql);30        * 发送insert,update,delete语句31        * 返回值int表示影响数据库表的行数32       */33       Statement stmt=conn.createStatement();34       String sql="insert into emp_jiawenzhe(empno,ename,sal,deptno) "35           + "values(1000,'王小二',1500,10)";36       int i=stmt.executeUpdate(sql);37       if(i>0){38         System.out.println("保存成功!");39       }40     } catch (ClassNotFoundException e) {41       e.printStackTrace();42       //1、记录日志43       //2、通知调用者44       throw new RuntimeException("加载驱动错误",e);45     }finally{46       //关闭连接47       if(conn!=null){48         try {49           conn.close();50         } catch (SQLException e) {51           e.printStackTrace();52         }53       }54     }55 56     57     58     59   }60 }

注:oracle数据库可以使用的jar包:ojdbc14.jar/ojdbc6.jar(oracle12c用这个)

mysql数据库可以使用的jar包:mysql-connector-java-5.0.4-bin.jar

加载驱动类:

Class.forName("com.mysql.jdbc.Driver");

未完待续!

---恢复内容结束---