JDBC连接数据库

一、登录                                                 二、数据库的一般操作                                                   三、使用工具类连接                        四、数据库连接需要的数据

……………………………………………………………………………………………………………………………………………………………………………………………………………………

一、登录

实例一:

//实体类对象
package com.qf.login;

public class User {
    private int id;
    private String username;
    private String password;
}
//登录
package com.qf.login;

//从控制台输入用户名和密码,判断登录是否成功
public class Login {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.nextLine();
        System.out.println("请输入密码");
        String password = sc.nextLine();

        // 封装对象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        // 调用具体的业务处理类
        DoLogin dl = new DoLogin();
        User u = dl.findUser(user);
        if (u == null) {
            System.out.println("登录失败");
        } else {
            System.out.println("欢迎" + u.getUsername() + "登录成功");
        }
    }
}
//处理事务
package com.qf.login;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DoLogin {      
    public User findUser(User u) {
        User user = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");

            Statement stmt = conn.createStatement();
            String sql = "select * from user where username='" + u.getUsername() + "' and password='" + u.getPassword()
                    + "'";

            ResultSet rs = stmt.executeQuery(sql);
            if (rs.next()) {
                user = new User();
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return user;
    }
}

实例二:

package com.neusoft.oracle.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        String driver = "oracle.jdbc.driver.OracleDriver";
        String oravleUr1="jdbc:oracle:thin:@//localhost:1521/neusoft";
        String user = "scott";
        String Password="tiger";
//        String sql  = "select * from user1 "
//                      +"where username = ? "
//                      +"and password = ?";
        StringBuilder sb = new StringBuilder();
        sb.append("select * ");
        sb.append("from user1 ");
        sb.append("where username = ? ");
        sb.append("and password = ?");
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(oravleUr1, user, Password);
            //PreparedStatement pstmt = conn.prepareStatement(sql);
            PreparedStatement pstmt = conn.prepareStatement(sb.toString());
            Scanner sc = new Scanner(System.in);
            System.out.println("please input username");
            String username = sc.nextLine();
            System.out.println("please input password");
            int  password1 = sc.nextInt();
            pstmt.setString(1, username);
            pstmt.setInt(2, password1);
            ResultSet rs = pstmt.executeQuery();
            if(rs.next()){
                System.out.println("登陆成功");
            }else{
                System.out.println("登录失败");
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }

二、数据库的一般操作

(一)JDBC:连接数据库     (二)JDBC:增删改查    (三)SQL语句注入的区别         (四)遍历结果集封装对象存储到list结合         (五)Junit简单使用

(一)JDBC:连接数据库【使用API文档】

1.需要jar包支持。  驱动直接去jar里找。

2.步骤。

public class DemoJdbc01 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            // a:加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        // DriverManager.registerDriver(new com.mysql.jdbc.Driver());

        // b:创建连接
        // conn =
        // DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02",
        // "root", "admin");

        // conn =
        // DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02?user=root&password=admin");

        Properties info = new Properties();
        info.setProperty("user", "root");      //封装用户名和属性
        info.setProperty("password", "admin");  //名值对
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", info);

        // c:创建执行sql语句的Statement对象
        stmt = conn.createStatement();

        // d:执行sql语句并处理结果
        String sql = "select * from emp";

        // 执行查询语句返回结果集
        rs = stmt.executeQuery(sql);

        // 结果集光标默认在第一条记录上方,调用next()光标向下移动一行
        // 如果有新行,返回true;如果到达末尾返回false
        while (rs.next()) {
               //使用get方法获得
                String ename = rs.getString(2);// 字段索引,从1开始
                int sal = rs.getInt("sal");// 字段名
                System.out.println(ename + "," + sal);
        }
        } catch (Exception e) {
        e.printStackTrace();
        } finally {
            // e:关闭资源
        try {
                if (rs != null) {
            rs.close();
                }
                if (stmt != null)
            stmt.close();
                if (conn != null) {
            conn.close();
                }
                } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
        }
    }
}

next()将光标从当前位置向前移一行。

返回:如果新的当前行有效,则返回true;如果不存在下一行,则返回false。

(二)JDBC:增删改查

package com.qf.jdbc;

import org.junit.Test;

public class DemoJdbc02 {
    @Test
    public void testInsert01() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");
        Statement stmt = conn.createStatement();

        String sql = "insert into student(name,age,sex,birthday,score,description) "
                + "values('tom',20,'M','1999-9-9',99.5,'tom is good boy')";

        // 返回值为影响表的行数
        int n = stmt.executeUpdate(sql);
        if (n > 0) {
            System.out.println("success");
        }
    }

    @Test
    public void testInsert02() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");
        Statement stmt = conn.createStatement();

        String name = "jack";
        int age = 21;
        String date = "2000-9-9";

        String sql = "insert into student(name,age,sex,birthday,score,description) " + "values('" + name + "'," + age
                + ",'M','" + date + "',99.5,'tom is good boy')";

        // 返回值为影响表的行数
        int n = stmt.executeUpdate(sql);
        if (n > 0) {
            System.out.println("success");
        }
    }

    @Test
    public void testUpdate() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");
        Statement stmt = conn.createStatement();

        String sql = "update student set score=90 where id=2";

        // 返回值为影响表的行数
        int n = stmt.executeUpdate(sql);
        // System.out.println(n);
        if (n > 0) {
            System.out.println("success");
        }
    }

    @Test
    public void testDelete() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");
        Statement stmt = conn.createStatement();

        String sql = "delete from student where id=2";

        // 返回值为影响表的行数
        int n = stmt.executeUpdate(sql);
        if (n > 0) {
            System.out.println("success");
        }
    }

    @Test
    public void testCount() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");
        Statement stmt = conn.createStatement();

        String sql = "select count(*) c from emp";

        ResultSet rs = stmt.executeQuery(sql);
        if (rs.next())
            // System.out.println(rs.getInt(1));
            System.out.println(rs.getInt("c"));
    }
}

 

(三)SQL语句注入的区别

statement和preparedstatement的区别:

package com.neusoft.oracle.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        String driver = "oracle.jdbc.driver.OracleDriver";
        String oracleUrl = "jdbc:oracle:thin:@//localhost:1521/neusoft";
        String user = "scott";
        String password = "tiger";
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(oracleUrl, user, password);
            Statement stmt = conn.createStatement();
            Scanner sc = new Scanner(System.in);
            System.out.println("please input username");
            String username = sc.nextLine();
            System.out.println("please input password");
            String password1 = sc.nextLine();
            
            //sql注入
            String sql = "select * "
                    + "from user1 "
                    + "where username = '"+username+"' "
                    + "and password = "+password1;
            System.out.println(sql);
            ResultSet rs = stmt.executeQuery(sql);
            if(rs.next()){
                System.out.println("登陆成功");
            }else{
                System.out.println("登陆失败");
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

package com.neusoft.oracle.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class AnotherTest {
    public static void main(String[] args) {
        String driver = "oracle.jdbc.driver.OracleDriver";
        String oracleUrl = "jdbc:oracle:thin:@//localhost:1521/neusoft";
        String user = "scott";
        String password = "tiger";
        int empno1 = 7369;
        String ename1 = "SMITH";
        String sql = "select * "
                + "from emp "
                + "where empno = ? "
                + "and ename = ?";
        try {
            Class.forName(driver);
            Connection conn = DriverManager.getConnection(oracleUrl, user, password);
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, empno1);
            pstmt.setString(2, ename1);
            ResultSet rs = pstmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getInt("empno"));
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

(四)遍历结果集封装对象存储到list结合

//实体类,get,set,tostring
package com.qf.entity;

public class Student {
    private int id;
    private String name;
    private int age;
    private String sex;
    private String birthday;
    private double score;
    private String description;    
}
package com.qf.jdbc;

public class DemoJdbc03 {
    public static void main(String[] args) {
        DemoJdbc03 dj = new DemoJdbc03();
        System.out.println(dj.findAll());
    }

    public List<Student> findAll() {
        List<Student> list = new ArrayList<Student>();

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee02", "root", "admin");
            stmt = conn.createStatement();
            String sql = "select * from student";
            rs = stmt.executeQuery(sql);
            // 遍历结果集
            while (rs.next()) {
                //封装对象
                Student stu = new Student();
                stu.setId(rs.getInt("id"));
                stu.setName(rs.getString("name"));
                stu.setAge(rs.getInt("age"));
                stu.setBirthday(rs.getString("birthday"));
                stu.setSex(rs.getString("sex"));
                stu.setDescription(rs.getString("description"));

                // 将对象存储到集合中
                list.add(stu);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // e:关闭资源
            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null)
                    stmt.close();
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return list;
    }
}

 

(五)Junit简单实用

package com.qf.junit;

public class Cal {
    public int add(int a, int b) {
        return a + b;
    }

    public int mul(int a, int b) {
        return a * b;
    }
}
package com.qf.junit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import junit.framework.Assert;

public class Demo {

    // 单元测试的方法是无参数无返回值

    @Before  //Junit执行之前执行
    public void before() {
        System.out.println("before");
    }

    @SuppressWarnings("deprecation")
    @Test // 注解。也就是说这是一个单元测试方法
    public void testAdd() {
        Cal cal = new Cal();
        // 断言:需要判断方法的返回值与预期的值是否一致
        Assert.assertEquals(3, cal.add(1, 2));
    }

    @After
    public void after() {
        System.out.println("after");
    }
}

 

三、使用工具类连接

(一)工具类的使用      (二)封装数据库工具类      (三)分页      (四)转账

(一)工具类的使用

//连接数据库,进行增删改查
package com.qf.jdbc;

public class Demo01 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = DBUtils.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from emp");
            while (rs.next()) {
                System.out.println(rs.getString("ename"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(rs, stmt, conn);
        }
    }
}

为了解决sql注入:  ('jgh' or '1'='1' ),只要有or则前面的被后面的覆盖掉,成功运行。所以statement改用preparedstatement,将不会出现这种失误。

 1 package com.qf.jdbc;
 2 
 3 public class Demo02 {
 4 
 5     @Test     //数据库的增删改一样
 6     public void testInsert() {
 7         try {
 8             Connection conn = DBUtils.getConnection();
 9             //创建PreparedStatement对象,封装SQL语句
10                    String sql = "insert into user(username,password) values(?,?)";
11             PreparedStatement pstmt = conn.prepareStatement(sql);
12             //给上面的问号赋值。参数索引从1开始
13                    pstmt.setString(1, "abc");
14             pstmt.setString(2, "def");
15                                
16             int n = pstmt.executeUpdate();
17             if (n > 0) {
18                 System.out.println("success");
19             }
20         } catch (SQLException e) {
21             // TODO Auto-generated catch block
22             e.printStackTrace();
23         }
24     }
25  
26      @Test
27     public void testUpdate() {
28         try {
29             Connection conn = DBUtils.getConnection();
30             String sql = "update user set username=?,password=? where id=?";
31             PreparedStatement pstmt = conn.prepareStatement(sql);
32             pstmt.setString(1, "aaa");
33             pstmt.setString(2, "bbb");
34             pstmt.setInt(3, 3);
35 
36             int n = pstmt.executeUpdate();
37             if (n > 0) {
38                 System.out.println("success");
39             }
40         } catch (SQLException e) {
41             // TODO Auto-generated catch block
42             e.printStackTrace();
43         }
44 
45     }
46  
47      @Test
48     public void testDelete() {
49         try {
50             Connection conn = DBUtils.getConnection();
51             String sql = " delete from user where id=?";
52             PreparedStatement pstmt = conn.prepareStatement(sql);
53             pstmt.setInt(1, 3);
54 
55             int n = pstmt.executeUpdate();
56             if (n > 0) {
57                 System.out.println("success");
58             }
59         } catch (SQLException e) {
60             // TODO Auto-generated catch block
61             e.printStackTrace();
62         }
63 
64     }
65 }

 

(二)封装数据库工具类

1.第一种方法

在同包下建立feil文件,输入下列代码:

//db.properties
driver = com.mysql.jdbc.Driver
mysqlUrl = jdbc:mysql://localhost:3306/RUNOOB
user = root
password = root
 1 package com.neusoft.oracle.jdbc;
 2 
 3 public class DBUtil {
 4     private static String driver = null;
 5     private static String mysqlUrl = null;
 6     private static String user = null;
 7     private static String password = null;
 8     private static Connection conn = null;
 9     static{
10         try {
11             Properties p = new Properties();
12             p.load(DBUtil.class.getResourceAsStream("db.properties"));
13             driver = p.getProperty("driver");
14             mysqlUrl = p.getProperty("mysqlUrl");
15             user = p.getProperty("user");
16             password = p.getProperty("password");
17             Class.forName(driver);
18             conn = DriverManager.getConnection(mysqlUrl, user, password);
19         } catch (IOException e) {
20             // TODO Auto-generated catch block
21             e.printStackTrace();
22         }catch (ClassNotFoundException e) {
23             // TODO Auto-generated catch block
24             e.printStackTrace();
25             }catch (SQLException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }     
29     }
30     private DBUtil(){
31         
32     }
33     public static Connection getConnection(){
34         return conn;    
35     }
36 }
37 //关闭一个流
38 public static void close(ResultSet rs,PreparedStatement pstmt,Connection conn){
39         if(rs != null){
40             try {
41                 rs.close();
42             } catch (SQLException e) {
43                 // TODO Auto-generated catch block
44                 e.printStackTrace();
45             }
46         }
47         if(pstmt != null){
48             try {
49                 pstmt.close();
50             } catch (SQLException e) {
51                 // TODO Auto-generated catch block
52                 e.printStackTrace();
53             }
54         }
55         if(conn != null){
56             try {
57                 conn.close();
58             } catch (SQLException e) {
59                 // TODO Auto-generated catch block
60                 e.printStackTrace();
61             }
62         }
63     }
64 }

 

2.第二种方法

配置文件
DBConfig.properties //文件名
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java
username=root
password=admin
 1 DBUtil.java //文件名
 2 package com.qf.utils;
 3 
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9 import java.util.ResourceBundle;
10 
11 //数据库工具类
12 //获得配置文件内容,创建获得连接的方法,关闭资源的方法
13 public class DBUtils {
14     private static String driverClass;
15     private static String url;
16     private static String username;
17     private static String password;
18 
19     static {
20         // 读取配置文件信息
21         ResourceBundle rb = ResourceBundle.getBundle("DBConfig");
22         driverClass = rb.getString("driverClass");
23         url = rb.getString("url");
24         username = rb.getString("username");
25         password = rb.getString("password");
26 
27         try {
28             Class.forName(driverClass);
29         } catch (ClassNotFoundException e) {
30             // TODO Auto-generated catch block
31             e.printStackTrace();
32         }
33     }
34 
35     // 获得连接
36     public static Connection getConnection() throws SQLException {
37         return DriverManager.getConnection(url, username, password);
38     }
39 
40     // 关闭资源
41     public static void closeAll(ResultSet rs, Statement stmt, Connection conn) {
42         try {
43             if (rs != null)
44                 rs.close();
45             if (stmt != null)
46                 stmt.close();
47             if (conn != null)
48                 conn.close();
49         } catch (SQLException e) {
50             // TODO Auto-generated catch block
51             e.printStackTrace();
52         }
53     }
54 
55 }

 

(三)分页

分页:数据量大时需要分页。

select * from emp limit 起始行索引,长度(个数)

 

1.规定每页显示的记录数

pageSize=3;

2.获得表中的总记录数

total

select count(*) from emp

3.计算页数

pageCount

total%pageSize==0?total%pageSize:total%pageSize+1

Math.ceiling(total*1.0/pageSize);

4.获得每页显示的数据

select * from emp limit 0,3

select * from emp limit 3,3

select * from emp limit 6,3

  获得每页数据,只需要获得页码(pageNo  1,2,3……)即可

select * from emp limit (pageNo-1)*pageSize,pageSize;

 1 创建实体类
 2 package com.qf.entity;
 3 
 4 public class Emp {
 5     private int empno;
 6     private String ename;
 7     private int sal;
 8 
 9     @Override
10     public String toString() {
11         return "Emp [empno=" + empno + ", ename=" + ename + ", sal=" + sal + "]";
12     }
13 }
  1 package com.qf.page;
  2 
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.util.ArrayList;
  8 import java.util.Iterator;
  9 import java.util.List;
 10 import java.util.Scanner;
 11 
 12 import com.qf.entity.Emp;
 13 import com.qf.utils.DBUtils;
 14 
 15 public class DemoPage {
 16 
 17     private static int pageSize = 3;// 每页显示的记录数
 18     private static int total;// 总记录数
 19     private static int pageCount;// 总页数
 20 
 21     public static void main(String[] args) {
 22         // 首先打印页码,以及第一页内容
 23         Connection conn = null;
 24         PreparedStatement pstmt = null;
 25         ResultSet rs = null;
 26         try {
 27             conn = DBUtils.getConnection();
 28             String sql = "select count(*) from emp";
 29             pstmt = conn.prepareStatement(sql);
 30             rs = pstmt.executeQuery();
 31             if (rs.next()) {
 32                 total = rs.getInt(1); //获得总的记录数
 33             }
 34             // 计算总页数
 35             pageCount = (int) Math.ceil(total * 1.0 / pageSize);
 36 
 37             // 打印页码
 38             for (int i = 1; i <= pageCount; i++) {
 39                 System.out.print(i + " ");
 40             }
 41             System.out.println();
 42 
 43             int pageNo = 1;
 44             // 显示第一页数据
 45             print(pageNo);
 46 
 47             System.out.println("请输入页码");
 48             Scanner sc = new Scanner(System.in);
 49             pageNo = Integer.parseInt(sc.next());
 50 
 51             if (pageNo <= pageCount && pageNo > 0)
 52                 print(pageNo);
 53             else {
 54                 System.out.println("请输入正确页码");
 55             }
 56         } catch (SQLException e) {
 57             // TODO Auto-generated catch block
 58             e.printStackTrace();
 59         }
 60 
 61     }
 62 
 63     /根据页码获得每页数据,打印数据
 64      * @param pageNo
 65      */
 66     private static void print(int pageNo) {
 67         List<Emp> list = getData(pageNo);
 68         Iterator<Emp> it = list.iterator();
 69         while (it.hasNext()) {
 70             System.out.println(it.next());
 71         }
 72     }
 73 
 74     /**
 75      * 封装方法,获得每页的数据
 76      * @param pageNo,页码
 77      * @return
 78      */
 79     public static List<Emp> getData(int pageNo) {
 80         List<Emp> list = new ArrayList<Emp>();
 81         try {
 82             Connection conn = DBUtils.getConnection();
 83             String sql = "select empno,ename,sal from emp limit ?,?";
 84             PreparedStatement pstmt = conn.prepareStatement(sql);
 85             pstmt.setInt(1, (pageNo - 1) * pageSize);
 86             pstmt.setInt(2, pageSize);
 87 
 88             ResultSet rs = pstmt.executeQuery();
 89             while (rs.next()) {
 90                 Emp emp = new Emp();
 91                 emp.setEmpno(rs.getInt(1));
 92                 emp.setEname(rs.getString(2));
 93                 emp.setSal(rs.getInt(3));
 94 
 95                 list.add(emp);
 96             }
 97         } catch (SQLException e) {
 98             // TODO Auto-generated catch block
 99             e.printStackTrace();
100         }
101         return list;
102     }
103 }

 

(四)转账

 1 package com.neusoft.oracle.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 
 8 public class TestConn {
 9     public static void main(String[] args) {    
10         Connection conn = OracleDBUtil.getConnection();
11         try {
12             conn.setAutoCommit(false);
13             give(conn);
14             recieve(conn);
15             conn.commit();
16         } catch (SQLException e) {
17             // TODO Auto-generated catch block
18             try {
19                 conn.rollback();
20             } catch (SQLException e1) {
21                 // TODO Auto-generated catch block
22                 e1.printStackTrace();
23             }
24         }
25     }
26     public static void give(Connection conn) throws SQLException{
27         String sql = "update bankuser set userbalance=userbalance-100 where userid = 1";
28         PreparedStatement pstmt = conn.prepareStatement(sql);
29         pstmt.executeUpdate();
30     }
31     public static void recieve(Connection conn) throws SQLException{
32         String sql = "update bankuser set userbalance=userbalance+100 where userid = 2";
33         PreparedStatement pstmt = conn.prepareStatement(sql);
34         pstmt.executeUpdate();
35     }
36 }

 

四、数据库连接需要的数据

oracle.jdbc.driver.OracleDriver
"jdbc:oracle:thin:@//localhost:1521/ORCL"    "scott"    "123456"
"com.mysql.jdbc.Driver"
"jdbc:mysql://localhost:3306/RUNOOB"   "root"    "123456"

 

posted @ 2020-04-20 15:25  骎翎  阅读(124)  评论(0)    收藏  举报