JDBC操作数据库详解

来源:互联网 发布:删除mac上的软件 编辑:程序博客网 时间:2024/06/05 03:03

1、JDBC概述

      JDBC(java database connectivity),提供了一种与平台无关的用于执行SQL语句的标准API,可以很方便的实现多种关系型数据库的统一操作。

      主要功能:

      1) 与数据库建立连接

      2)先数据库发送SQL语句

      3)处理从数据库返回的结果


2、 JDBC中常用的类和接口

       JDBC的接口和类都在java.sql包中

       1)Connection 接口

            代表与数据库的连接

            常用方法:createStatement()    创建Statement对象

                                 preparedStatement()  创建预处理 preparedStatement对象

                                 commit() 提交事务,并且释放当前Connection对象持有的数据库锁

                                 roolback() 回滚事务中所有更改,并且释放当前Connection对象持有的数据库锁

                                 close()  立即释放Connection对象的数据库和JDBC资源

         2)Statement接口

            用于在已经建立连接的基础上向数据库发送SQL语句,Statement对用来执行不带参数的简单SQL语句

            常用方法: executeUpdate() 用于执行数据库更新的SQL语句,如insert、update、delete等语句,返回更新的记录数

                            executeQuery(String sql) 用于执行数据库的查询操作,返回一个resultSet对象

         3)PreparedStatement接口

           它是Statement的子接口,属于预处理操作,由于它已经预编译过,所有执行速度上要比Statement对象要高。PreparedStatement接口可以用来动态的执行SQL语句。

           它可以预防SQL注入攻击。SQL注入只对语句编译过程有破坏作用。

           PreparedStatement对象在执行SQL命令时,命令回呗数据库进行编译和解析,并放到命令缓存区。然后,每当执行同一个PreparedStatement对象时,由于缓存区中可以发现预编译的命令,虽然它会被在解析一次,但是不会再进行编译,是可以重复使用的,所有可以提高系统的性能。

          常用方法:executeUpdate()   用于执行数据库更新的SQL语句,如insert、update、delete等语句

                              executeQuery()   用于执行数据库的查询操作,返回一个resultSet对象

                              还有一些setXX(int index,int k ) 设定动态参数值得方法

          4)DriverManager类

            用来管理数据库中所有驱动程序,作用于用户和驱动程序之间,并在数据库的驱动程序之间建立连接。

            Connection conn = DriverManager.getConnection(url,user,password);  获取数据库的连接

          5)ResultSet接口

           ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet实例具有指向数据行的指针,指针开始的位置在第一条记录前面,通过                      next()方法将指针下移。


3、JDBC连接数据库的操作步骤:

          1)加载JDBC驱动

          2)建立数据库连接,获得Connection对象

          3)获得Statement对象或者PreparedStatement 对象

          4)执行SQL语句

          5)访问结果集对象ResultSet对象

          6)依次关闭上面所用的对象

       

import java sql.*;public class Test{    public static void main(String args[]){        Connection con = null;PreparedStatement ps = null;ResultSet rs = null;        try{Class.forName("com.mysql.jdbc.Driver");con = DriverManager.getConnection("jdbc:mysql://localhost:3306/DatebaseName",user,password);PS = con.preparedStatement("select * from user where age >=?");ps.setInt(1,10);rs = ps.executeQuery();while(rs.next){   System.out.println(rs.getInt(1)+"---"rs.getString(2));}}catch(SQLException e1){   e1.printStackTrace();}finally{if(rs!=null){    rs.close();}if(ps!=null){    rs.close();}if(con!=null){    rs.close();}}    }}


4、executeQuery()、executeUpdate()的用法区别

      executeQuery()方法是在PreparedStatement对象在执行SQL查询,并返回查询生成的ResultSet对象

      executeUpdate()方法中执行的SQL语句必须是DML语句,例如:insert,update,delete语句,或者是没有返回内容的DDL语句。

5、CallableStatement接口

      主要用来调用数据库的存储过程。

      假设存储过程名称为myproc

      String sql = "{Call myproc(?,?,?)}"

      CallableStatement catmt = null;

      catmt = conn.prepareCall(sql);

     使用CallableStatement调用数据库过程,同直接在数据库中调用过程一样。此处需要补充,带复习存储过程后完善此处

6、JDBC批处理

    JDBC2.0中最重要的概念就是批处理操作,使用批处理操作可以一次性插入多条SQL语句,如果要完成批处理操作,则使用addBatch()加入要执行的一条SQL命令已经executeBatch()执行全部命令。

  代码片段:

   for(int i=0;i<10;i++){   ps.set(1,"张珊"+i)   ps.addBatch();}int temp[] = ps.executeBatch();       
7、事务处理

    事务就是所有操作要么一起成功,要么一起失败。

    事务的(ACID):原子性、一致性、隔离性、持久性。

    在JDBC中 一般而言,事务默认操作是自动提交,操作成功,系统自动调用commit(),失败则调用rollback()方法。

    使用connection.setAutoCommit(false);//取消自动提交

     connection.rollback();//事务回滚

8、Class.forName的作用

     在java语言中,任何类只有被转载到JVM上才能运行。Class.forName()方法的作用就是把类加载打JVM中,它会返回一个带有给定字符串名的类对象,并且JVM会加载这个类,同时会执行该类的静态代码段。

   类加载机制

  Class.forName(className).newInstance();

 



0 0
原创粉丝点击