Java 7 JDBC

来源:互联网 发布:兰州财经大学教务网络 编辑:程序博客网 时间:2024/05/18 01:59

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。全部操作位于java.sql包之中,JDBC是数据库连接服务,主要是由Java操作数据库的执行标准,所以在这个Jdbc中,所有组成几乎都是接口。在Java 7之中其实没多少改变,和jdk 1.6之前基本一样。

1:日常开发中常用的接口:

Connection  、PreparedStatement、ResultSet、Statement

 2:常用操作类

DriverManager、Date、Time、Timestamp

 在Java之中对于程序连接数据库的操作,主要有三种方式支持:

 第一种:JDBC-ODBC:使用ODBC技术进行数据库连接(流程:程序——JDBC-ODBC——DB 性能操作,数据库实时性特别差,基本没人用了。这个操作由SUN自己提供,所有的JDBC技术都是最新版的)

 第二种:JDBC连接:由各个数据库生产商提供驱动程序的实现,用户需要单独配置  jar包(流程:程序-jdbc-数据库直接操作,性能高)

 第三种:JDBC网络连接,由程序根据网络协议连接到制定的数据库上,这个驱动程序依然由数据库生产商提供,在开发中主要是使用JDBC来进行网络连接。

例如连接Oracle 数据库:

1:找驱动

2:在JAVA之中,由于JDBC属于固定服务,所以代码流程完全一样“

第一步:加载数据库驱动程序

第二步:通过DriverManage类根据指定的属性内容连接数据库

第三步进行数据库的CRUD操作,执行SQL语句

第四步关闭数据库连接

首先需要知道的信息:

数据库的驱动程序路径:oracle.jdbc.driver.OracleDriver

数据库连接地址:jdbc:oracle:thin:@localhost:1521:orcl

数据库登录名和密码

分析JDBC:

 JDBC的设计就属于一个工厂设计模式,其中的DriverManager负责取得Connextion接口的实例对象

1:使用Statement操作数据库

如果想要执行数据库操作,在java中使用Statenment接口完成。但是如果取得Statement接口对象的话,必须依靠Connection接口完成,在Connection接口中方法:得到Statement对象:Connection.createStatement()当取得Statement对象之后就可进行CRUD操作!

更新操作:int executeUpdate(String sql) throws SQLException

查询操作:ResultSet executeQuery(String sql)  throws SQLException

关闭操作: void close() throws SQLException

代码如下(方便起见异常统一抛出):

 /*           * 第一步:加载驱动程序             */          Class.forName(DBDRIVER);            /*            * 第二步 连接数据库  public static Connection getConnection(String url) throws SQLException                                           */             conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);                         /*              * 第三步:取得Statement对象    Statement createStatement()  throws SQLException                           */                         Statement stmt =conn.createStatement();                 conn.close();


在Java 7中有一个很有意思的,继承了AutoCloseable接口:public interface Connection extends Wrapper, AutoCloseable。关于AutoCloseable:A resource that must be closed when it is no longer needed. 

公共接口,自动关闭不需要使用的资源。看着很爽,不过一般自动的东西部使用,使用了就坑爹了。良好的编程习惯,资源操作必须全部由手工关闭!

相关CRUD操作:

1:ResultSet接口

文档解释:A table of data representing a database result set, which is usually generated by executing a statement that queries the database:表示数据库结果集,这通常是通过执行查询数据库的语句生成的数据表。 

在Connection接口中由createStatement() throws SQLException 方法取得Statement 对象。

Statement对象中的executeQuery(String sql)  throws SQLException 方法返回ResultSet 对象。

    Statement stmt  = con.createStatement(); 

    ResultSet rs = stmt.executeQuery(sql); //返回ResultSet对象
 在ResultSet接口中主要有:

1: boolean next()throws SQLException 

该方法:从当前位置移动光标前移一行。时,ResultSet指针最初位于第一行之前,给该方法的第一次调用next使得第一行成为当前行;第二次调用使第二行成为当前行,依此类推。 当调用next方法返回false,则游标的最后一行之后的位置。中的ResultSet方法的任何调用它需要一个当前行,将导致抛出SQLException。

2:type getXXX(type columnIndex) throws SQLException

如:

 ResultSet  rs =stmt.executeQuery(sql);              while(rs.next()){                              int id =rs.getInt("id");              String name =rs.getString("name");


2:PreparedStatement接口

以上均由Statement接口操作,但是实际开发中一般不用!一般使用Statement的子接口:public interface PreparedStatement extends Statement

即:An object that represents a precompiled SQL statement.一个对象,表示一个预编译的SQL语句。 

使用方法:

Upadte操作

   PreparedStatement pstmt = con.prepareStatement("UPDATE tablename SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)

Query操作

executeQuery() throws SQLException 返回ResultSet 对象,无须参数。

这样一对比,PreparedStatement 瞬间高大上了。所以开发中一般使用PreparedStatement接口。从而避免了使用Statement接口中带来的种种比较那个的问题。






0 0
原创粉丝点击