JDBC底层代码

来源:互联网 发布:微分销源码 .net 编辑:程序博客网 时间:2024/05/18 03:50

JDBC(原始不考虑事务)

package cn.gts.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.junit.Test;import cn.gts.entity.User;public class Jdbc {    @Test    public void jdbcTest() {        Connection conn = null;        PreparedStatement psmt = null;        ResultSet rs = null;        try {            /*             * jdbc四大配置参数             * driverClassName:com.mysql.jdbc.Driver             * url:jdbc:mysql://localhost:3306/test             * username:root             * password:123             */            //加载驱动            Class.forName("com.mysql.jdbc.Driver");            String url = "jdbc:mysql://localhost:3306/test";            String username = "root";            String password = "123";            //得到连接            conn = DriverManager.getConnection(url,username,password);            //编写sql语句            String sql = "select * from user where username = ?";            //预编译sql语句            psmt = conn.prepareStatement(sql);            //设置参数值            psmt.setString(1, "zhangSan");            //执行sql语句得到结果集            rs = psmt.executeQuery();            //遍历结果集            while(rs.next()) {                //根据字段得到数据                String username = rs.getString("username");                String password = rs.getString("password");                //封装                User user = new User();                user.setUsername(username);                user.setPassword(password);                System.out.println(user);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                rs.close();                psmt.close();                conn.close();            } catch (SQLException e) {                e.printStackTrace();            }        }    }}

JDBC演示转账(事务案例)

public void transfer(boolean b) {        Connection con = null;        PreparedStatement pstmt = null;        try {            con = JdbcUtils.getConnection();            //手动提交            con.setAutoCommit(false);            String sql = "update account set balance=balance+? where id=?";            pstmt = con.prepareStatement(sql);            //操作            pstmt.setDouble(1, -10000);            pstmt.setInt(2, 1);            pstmt.executeUpdate();            // 在两个操作中抛出异常            if(b) {                throw new Exception();            }            pstmt.setDouble(1, 10000);            pstmt.setInt(2, 2);            pstmt.executeUpdate();            //提交事务            con.commit();        } catch(Exception e) {            //回滚事务            if(con != null) {                try {                    con.rollback();                } catch(SQLException ex) {}            }            throw new RuntimeException(e);        } finally {            //关闭            JdbcUtils.close(con, pstmt);//这个只是一个自己写的工具类而已        }    }
原创粉丝点击