zoukankan      html  css  js  c++  java
  • jdbc操作数据库(详细)

    JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从而实现对数据库中的数据操作的目的。

    一、JDBC简介

    JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统一的访问。JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言编写完成,所以具有很好的跨平台特性,使用JDBC编写的数据库应用程序可以在任何支持java的平台上运行,而不必在不同的平台上编写不同的应用程序。

    JDBC的主要功能如下:

    (1)建立与数据库或者其他数据源的链接

    (2)向数据库发送SQL命令

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

    二、JDBC中常用类和接口

    连接到数据库(Connection)、建立操作指令(Statement)、执行查询指令(executeQuery)、获得查询结果(ResultSet)等。

    1、驱动程序管理类(DriverManager)

    DriverManager类是JDBC的管理类,作用于用户和驱动程序之间。它跟踪在可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序登陆时间限制及登录和跟踪消息的显示事务。对于简单的应用程序,一般程序员需要在此类中直接使用唯一的方法时DriverManager.getConnection()。该方法将建立与数据库的链接。JDBC允许用户调用DriverManager的方法getDriver()、getDrivers()和registerDriver()及Driver的方法connect().

    2、声明类(Statement)

    Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,它们都作为在给定链接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。它们都专用于发送特定类型的SQL语句:

    (1)Statement对象用于执行不带参数的简单的SQL语句;Statement接口提供了执行语句和获取结果的基本方法。

    (2)PerparedStatement对象用于执行带或不带IN参数的预编译SQL语句;PeraredStatement接口添加处理IN参数的方法;

    (3)CallableStatement对象用于执行对数据库已存储过程的调用;CallableStatement添加处理OUT参数的方法。

    Statement提供了许多方法,最常用的方法如下:

    (1)execute()方法:运行语句,返回是否有结果集。

    (2)executeQuery()方法:运行查询语句,返回ReaultSet对象。

    (3)executeUpdata()方法:运行更新操作,返回更新的行数。

    (4)addBatch()方法:增加批处理语句。

    (5)executeBatch()方法:执行批处理语句。

    (6)clearBatch()方法:清除批处理语句。

    3、数据库连接类 (Connection)

    Connection对象代表与数据库的链接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与很多数据库有连接。打开连接与数据库建立连接的标准方法是调用DriverManager.getConnection()方法。

    String url="jdbc:mysql://127.0.0.1:3306/imooc";

    String user="root";

    String password="tiger";

    DriverManager.getConnection(url,user,password);

    4、结果集合类 (ResultSet)

    ResultSet包含符合SQL语句中条件的所有行记录,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next()方法用于移动到ResultSet中的下一行,使下一行成为当前行。

    5、JDBC编程步骤

    (1)加载驱动程序:Class.forName(driverClass)

    加载mysql驱动:Class.forName("com.mysql.jdbc.Driver");

    加载oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");

    (2)获得数据库连接

    DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc",user,password);

    DriverManager.gerConnection(URL,user,password);

    (3)创建Statement对象:conn.createStatement();

    (4)向数据库发送SQL命令

    (5)处理数据库的返回结果(ResultSet类)

     代码演示:

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.ResultSet;
     3 import java.sql.SQLException;
     4 import java.sql.Statement;
     5 import java.sql.Connection;
     6 import java.sql.DriverManager;
     7 import java.sql.SQLException;
     8 
     9 
    10 public class javaTest {
    11    
    12     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    13         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    14         String USER="root";
    15         String PASSWORD="tiger";
    16         //1.加载驱动程序
    17         Class.forName("com.mysql.jdbc.Driver");
    18         //2.获得数据库链接
    19         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    20         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    21         Statement st=conn.createStatement();
    22         ResultSet rs=st.executeQuery("select * from user");
    23         //4.处理数据库的返回结果(使用ResultSet类)
    24         while(rs.next()){
    25             System.out.println(rs.getString("user_name")+" "
    26                           +rs.getString("user_password"));
    27         }
    28         
    29         //关闭资源
    30         rs.close();
    31         st.close();
    32         conn.close();
    33     }
    34 }
    复制代码

    运行结果:

     1 xiao 123 2 lo 123 3 小孩 123 4 校长 123 5 xiaol 123 

    三、常用操作(对于记录来说)

    JDBC可以实现SQL语句在数据库中的执行,也就是说,数据库的所有操作,包括对数据库,对表格,对记录都可以进行相应的操作,但是其实原则上,JDBC只应该对记录进行操作,不能对表格乃至数据库进行更改操作。下面只介绍对记录的操作。

    1.获取数据库连接

    一般为了方便建立数据库链接通常会创建一个类,里面封装好实现数据库链接的函数,方便调用实现数据库连接。

    复制代码
     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.SQLException;
     4 
     5 public class DBUtil {
     6 
     7     private static final String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
     8     private static final String USER="root";
     9     private static final String PASSWORD="tiger";
    10     
    11     private static Connection conn=null;
    12     
    13     static {
    14         try {
    15             //1.加载驱动程序
    16             Class.forName("com.mysql.jdbc.Driver");
    17             //2.获得数据库的连接
    18             conn=DriverManager.getConnection(URL, USER, PASSWORD);
    19         } catch (ClassNotFoundException e) {
    20             e.printStackTrace();
    21         } catch (SQLException e) {
    22             e.printStackTrace();
    23         }
    24     }
    25     //将获得的数据库与java的链接返回(返回的类型为Connection)
    26     public static Connection getConnection(){
    27         return conn;
    28     }
    29 }
    复制代码

    2、增加表中记录

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.Connection;
     7 import java.sql.DriverManager;
     8 import java.sql.SQLException;
     9 
    10 
    11 public class javaTest {
    12    
    13     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    14         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    15         String USER="root";
    16         String PASSWORD="tiger";
    17         //1.加载驱动程序
    18         Class.forName("com.mysql.jdbc.Driver");
    19         //2.获得数据库链接
    20         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    21         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    22         String s=""+"insert into user(id,user_name,user_password) values("+"2,?,123)";
    23         PreparedStatement pst=conn.prepareStatement(s);
    24         
    25         pst.setString(1, "xiaoshuai1");
    26         //pst.setString(2, "123");
    27             
    28         pst.execute();        
    29         //关闭资源        
    30         pst.close();
    31         conn.close();
    32     }
    33 }
    复制代码

     3、删除数据库表格记录

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.Connection;
     7 import java.sql.DriverManager;
     8 import java.sql.SQLException;
     9 
    10 
    11 public class javaTest {
    12    
    13     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    14         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    15         String USER="root";
    16         String PASSWORD="tiger";
    17         //1.加载驱动程序
    18         Class.forName("com.mysql.jdbc.Driver");
    19         //2.获得数据库链接
    20         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    21         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    22         String s="delete from user where id=2 and user_name=?";
    23         PreparedStatement pst=conn.prepareStatement(s);
    24         
    25         pst.setString(1, "xiaoshuai1");
    26         //pst.setString(2, "123");
    27             
    28         pst.execute();        
    29         //关闭资源        
    30         pst.close();
    31         conn.close();
    32     }
    33 }
    复制代码

    4、更新数据库中表格记录信息

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.Connection;
     7 import java.sql.DriverManager;
     8 import java.sql.SQLException;
     9 
    10 
    11 public class javaTest {
    12    
    13     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    14         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    15         String USER="root";
    16         String PASSWORD="tiger";
    17         //1.加载驱动程序
    18         Class.forName("com.mysql.jdbc.Driver");
    19         //2.获得数据库链接
    20         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    21         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    22         String s="update user set user_name=? where id=1 ";
    23         PreparedStatement pst=conn.prepareStatement(s);
    24         
    25         pst.setString(1, "xiaoshuaige");
    26         //pst.setString(2, "123");
    27             
    28         pst.execute();        
    29         //关闭资源        
    30         pst.close();
    31         conn.close();
    32     }
    33 }
    复制代码

    5、查询

    (1)单个变量的查询

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.Connection;
     7 import java.sql.DriverManager;
     8 import java.sql.SQLException;
     9 
    10 
    11 public class javaTest {
    12    
    13     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    14         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    15         String USER="root";
    16         String PASSWORD="tiger";
    17         //1.加载驱动程序
    18         Class.forName("com.mysql.jdbc.Driver");
    19         //2.获得数据库链接
    20         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    21         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    22         String s="select user_name,user_password from user where user_name=? and user_password=?";
    23         PreparedStatement pst=conn.prepareStatement(s);
    24         
    25         pst.setString(1, "xiao");
    26         pst.setString(2, "123");
    29         ResultSet rs=pst.executeQuery();
    30         //4.处理数据库的返回结果(使用ResultSet类)
    31         while(rs.next()){
    32             System.out.println(rs.getString("user_name")+" "
    33                           +rs.getString("user_password"));
    34         }        
    35         //关闭资源
    36         rs.close();
    37         pst.close();
    38         conn.close();
    39     }
    40 }
    复制代码

    运行结果:

    xiao 123

    特别注意当正则表达式形如:select ?,? from user时,要特别注意,查询的结果并不是自己想要查询的结果

    复制代码
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    
    public class javaTest {
       
        public static void main(String[] args) throws ClassNotFoundException, SQLException  {
            String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
            String USER="root";
            String PASSWORD="tiger";
            //1.加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //2.获得数据库链接
            Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
            //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
            String s="select ?,? from user where user_name=xiao and user_password=123";
            PreparedStatement pst=conn.prepareStatement(s);
            
            pst.setString(1, "user_name");
            pst.setString(2, "user_password");
            ResultSet rs=pst.executeQuery();
            //4.处理数据库的返回结果(使用ResultSet类)
            
                System.out.println(rs.getString("user_name")+" "
                              +rs.getString("user_password"));
             
            //关闭资源
            rs.close();
            pst.close();
            conn.close();
        }
    }
    复制代码

    运行结果:

     1 user_name user_password
    

    (2)多个变量查询

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.Connection;
     7 import java.sql.DriverManager;
     8 import java.sql.SQLException;
     9 
    10 
    11 public class javaTest {
    12    
    13     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    14         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    15         String USER="root";
    16         String PASSWORD="tiger";
    17         //1.加载驱动程序
    18         Class.forName("com.mysql.jdbc.Driver");
    19         //2.获得数据库链接
    20         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    21         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    22         String s="select user_name,user_password from user where 1=1";
    23         PreparedStatement pst=conn.prepareStatement(s);
    24         
    25         /*pst.setString(1, "xiao");
    26         pst.setString(2, "123");*/
    27         /*pst.setString(1, "user_name");
    28         pst.setString(2, "user_password");*/
    29         ResultSet rs=pst.executeQuery();
    30         //4.处理数据库的返回结果(使用ResultSet类)
    31         while(rs.next()){
    32             System.out.println(rs.getString("user_name")+" "
    33                           +rs.getString("user_password"));
    34         }        
    35         //关闭资源
    36         rs.close();
    37         pst.close();
    38         conn.close();
    39     }
    40 }
    复制代码

    运行结果:

    复制代码
     1 xiao 123
     2 xiaod 123
     3 xiaok 123
     4 xiao1 123
     5 xo 122
     6 po 123
     7 xio 123
     8 lo 123
     9 小孩 123
    10 校长 123
    11 xiaol 123
    复制代码

     6、调用存储过程

    (1)调用无参存储过程

    1)存储过程代码

    1 CREATE  PROCEDURE SP_select_nofilter3() 
    2 BEGIN
    3      SELECT * FROM file;
    4 END;

    2)调用代码

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.CallableStatement;
     7 import java.sql.Connection;
     8 import java.sql.DriverManager;
     9 import java.sql.SQLException;
    10 
    11 
    12 public class javaTest {
    13    
    14     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    15         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    16         String USER="root";
    17         String PASSWORD="tiger";
    18         //1.加载驱动程序
    19         Class.forName("com.mysql.jdbc.Driver");
    20         //2.获得数据库链接
    21         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    22         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    23         String s="call SP_select_nofilter3() ";
    24         CallableStatement cst=conn.prepareCall(s);
    25             
    26         ResultSet rs=cst.executeQuery();
    27         
    28         while(rs.next()){
    29             System.out.println(rs.getString("user_name"));
    30         }
    31         //关闭资源        
    32         cst.close();
    33         conn.close();
    34     }
    35 }
    复制代码

     运行结果:

     1 xiao 2 xiao 3 xiao 4 xiao 

    (2)调用含有IN参数的存储过程

    1)存储过程代码

    复制代码
    1 CREATE  PROCEDURE SP_select_nofilter4(IN SP_name varchar(20)) 
    2 BEGIN
    3 IF SP_name=null OR SP_name=' ' THEN
    4      SELECT * FROM file;
    5 ELSE
    6     SELECT * FROM file WHERE user_name=SP_name;
    7 END IF;
    8 END;
    复制代码

    2)调用代码:

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.CallableStatement;
     7 import java.sql.Connection;
     8 import java.sql.DriverManager;
     9 import java.sql.SQLException;
    10 
    11 
    12 public class javaTest {
    13    
    14     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    15         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    16         String USER="root";
    17         String PASSWORD="tiger";
    18         //1.加载驱动程序
    19         Class.forName("com.mysql.jdbc.Driver");
    20         //2.获得数据库链接
    21         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    22         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    23         /*查询不带参数*/
    24         String s="call SP_select_nofilter4(?) ";
    25         CallableStatement cst=conn.prepareCall(s);
    26         cst.setString(1," ");    
    27         ResultSet rs=cst.executeQuery();
    28         
    29         while(rs.next()){
    30             System.out.println(rs.getString("id")+"  "+rs.getString("user_name"));
    31         }
    32         System.out.println("*******************************");
    33         //查询带参数
    34         String s1="call SP_select_nofilter4(?)";
    35         CallableStatement cst1=conn.prepareCall(s1);
    36         cst1.setString(1, "xiao1");
    37         ResultSet rs1=cst1.executeQuery();
    38 
    39         while(rs1.next()){
    40             System.out.println(rs1.getString("id")+"  "+rs1.getString("user_name"));
    41         }
    42         
    43         //关闭资源    
    44         rs1.close();
    45         cst1.close();
    46         rs.close();
    47         cst.close();
    48         
    49         conn.close();
    50     }
    51 }
    复制代码

    运行结果:

    复制代码
    1 1  xiao
    2 2  xiao
    3 3  xiao
    4 4  xiao1
    5 *******************************
    6 4  xiao1
    复制代码

    (3)调用含有OUT参数存储过程

    1)存储过程代码

    1 CREATE  PROCEDURE SP_select_nofilter5(OUT SP_name varchar(20)) 
    2 BEGIN
    3     SELECT user_name INTO  SP_name FROM file WHERE id=2;
    4 END;

    2)代码调用

    复制代码
     1 import java.sql.DriverManager;
     2 import java.sql.PreparedStatement;
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 import java.sql.Statement;
     6 import java.sql.Types;
     7 import java.sql.CallableStatement;
     8 import java.sql.Connection;
     9 import java.sql.DriverManager;
    10 import java.sql.SQLException;
    11 
    12 
    13 public class javaTest {
    14    
    15     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    16         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    17         String USER="root";
    18         String PASSWORD="tiger";
    19         //1.加载驱动程序
    20         Class.forName("com.mysql.jdbc.Driver");
    21         //2.获得数据库链接
    22         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    23         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    24         String s="call SP_select_nofilter5(?) ";
    25         CallableStatement cst=conn.prepareCall(s);
    26         cst.registerOutParameter(1, Types.VARCHAR);
    27         ResultSet rs=cst.executeQuery();
    28         String name=cst.getString(1);
    29         
    30         System.out.println(name);    
    31         
    32         //关闭资源    
    33         rs.close();
    34         cst.close();    
    35         conn.close();
    36     }
    37 }
    复制代码

    运行结果:

    xiao

    (4)既含IN又含OUT参数的存储过程

    1)存储过程代码

    1 CREATE  PROCEDURE SP_select_nofilter6(OUT SP_name varchar(20),IN id1  int,OUT path1 BLOB) 
    2 BEGIN
    3     SELECT path , user_name INTO  path1, SP_name FROM file WHERE id=id1;
    4 END;

    2)代码调用

    复制代码
     1 public class javaTest {
     2    
     3     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
     4         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
     5         String USER="root";
     6         String PASSWORD="tiger";
     7         //1.加载驱动程序
     8         Class.forName("com.mysql.jdbc.Driver");
     9         //2.获得数据库链接
    10         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    11         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    12         String s="call SP_select_nofilter6(?,?,?) ";
    13         CallableStatement cst=conn.prepareCall(s);
    14         cst.setInt(2, 2);
    15         cst.registerOutParameter(1, Types.VARCHAR);
    16         cst.registerOutParameter(3, Types.BLOB);
    17         ResultSet rs=cst.executeQuery();
    18         String name=cst.getString(1);
    19         Blob b=cst.getBlob(3);
    20         
    21         System.out.println("name:"+name+" Blob:"+b);
    22        
    23         
    24         //关闭资源    
    25         rs.close();
    26         cst.close();    
    27         conn.close();
    28     }
    29 }
    复制代码

    运行结果:

    name:xiao Blob:com.mysql.jdbc.Blob@3941a79c

     四、事务

    事务(Transaction)是作为单个逻辑工作单位执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。

    1、事务的特点

    (1)原子性:事务是一个完整的操作

    (2)一致性:当食物完成时,数据必须处于一致状态

    (3)隔离性:对数据进行修改的所有兵法事务彼此隔离

    (4)永久性:事务完成后,它对数据库的修改被永久的保存

    2、JDBC对事务管理的支持

    (1)我们通过提交Commit()或是回退rollback()来管理事务的操作

    (2)事务操作默认是自动提交的

    (3)可以通过调用setAutoCommit(false)来禁止自动提交。

    3、批处理

    1、批处理规范

    JDBC升级到2.0后增强了statement接口,使它能够以批处理的方式执行更新操作(select等语句不能使用)。批处理操作指的是一次可以提交多句更新语句,这些更新语句一起执行。批处理相对逐句提交,使性能大幅度提高。它的具体步骤如下:

    复制代码
    1 conn.setAutoCommit(false);
    2         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    3         Statement st=conn.createStatement();
    4         st.addBatch("insert into user(user_name,user_password) values('小时2','456')");
    5         st.addBatch("insert into user(user_name,user_password) values('小时3','4561')");
    6         
    7         st.executeBatch();
    8         conn.commit();
    复制代码

    2、批处理举例

    复制代码
     1 package test;
     2 
     3 import java.sql.DriverManager;
     4 import java.sql.PreparedStatement;
     5 import java.sql.ResultSet;
     6 import java.sql.SQLException;
     7 import java.sql.Statement;
     8 import java.sql.Types;
     9 import java.sql.Blob;
    10 import java.sql.CallableStatement;
    11 import java.sql.Connection;
    12 import java.sql.DriverManager;
    13 import java.sql.SQLException;
    14 
    15 
    16 public class javaTest {
    17    
    18     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
    19         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
    20         String USER="root";
    21         String PASSWORD="tiger";
    22         //1.加载驱动程序
    23         Class.forName("com.mysql.jdbc.Driver");
    24         //2.获得数据库链接
    25         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
    26         //设置事务不自动提交
    27         conn.setAutoCommit(false);
    28         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
    29         Statement st=conn.createStatement();
    30         st.addBatch("insert into user(user_name,user_password) values('小时2','456')");
    31         st.addBatch("insert into user(user_name,user_password) values('小时3','4561')");
    32         
    33         st.executeBatch();
    34         conn.commit();
    35         
    36         //关闭资源    
    37         st.close();    
    38         conn.close();
    39     }
    40 }
    复制代码
  • 相关阅读:
    ABP框架理论研究总结(典藏版)
    ABP系列文章总目录:
    使用NServiceBus开发分布式应用
    shell脚本进阶 详解及其实例(一)
    linux模拟实现主机跨路由通信
    网络管理之基础知识详解
    RAID RAID 大揭秘~
    磁盘管理(一)磁盘结构
    如何在centos7上安装源码包
    压缩与解压缩
  • 原文地址:https://www.cnblogs.com/libin6505/p/7698597.html
Copyright © 2011-2022 走看看