图书管理系统总结——数据库操作(一):数据库连接

 由于经常在晚上回宿舍写代码,没有网,故而没用老师提供的Oracle数据库服务器,在自己电脑上装了一个MySQL。而且JAVA配MySQL还是很方便的。

数据库连接:

参考了http://blog.csdn.net/superit401/article/details/51585620,讲的十分全面。

这里数据库连接专门作为一个工具类,连接的是自己的MyQL数据库。由于像登录,充值这样关键事务需要注意保证一致性,所以显示指定了事务,并为之添加行级锁,故而还有一些与数据库事务相关的操作都封装在这个类中。

/**
 * 数据库工具类
 * @author Administrator
 *
 */
public class DbUtil {

    private String dbUrl="jdbc:mysql://localhost:3306/db_book"; // 数据库连接地址://202.38.88.99:1434/student
    private String dbUserName="root"; // 用户名student
    private String dbPassword="student"; // 密码
    private String jdbcName="com.mysql.jdbc.Driver"; // 驱动名称
    
    /**
     * 获取数据库连接
     * @return
     * @throws Exception
     */
    public Connection getCon()throws Exception{
        Class.forName(jdbcName);
        Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
        return con;
    }
    
    /**
     * 关闭数据库连接
     * @param con
     * @throws Exception
     */
    public void closeCon(Connection con)throws Exception{
        if(con!=null){
            con.close();
        }
    }
    
    /**
     * 关闭连接表对象  
     * @param pstmt
     */
    public static void close(java.sql.PreparedStatement pstmt){  
        if (pstmt!=null) {  
            try {  
                pstmt.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }     
        }  
    }  
    
    /**
     * 关闭结果集,释放资源
     * @param rs
     */
    public static void close(ResultSet rs) {  
        if(rs!=null){  
            try {  
                rs.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    
   /**
    * 关闭自动提交事务
    * @param conn
    */
    public static void beginTransaction(Connection conn){  
        if (conn!=null) {  
            try {  
                if(conn.getAutoCommit()){  
                    conn.setAutoCommit(false);  
                }  
            } catch (SQLException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
    }  
    /**
     * 提交事务
     * @param conn
     */
    public static void commitTransaction(Connection conn){  
        try {  
            if(conn!=null){  
                if (!conn.getAutoCommit()) {  
                    conn.commit();  
                }  
            }  
        } catch (Exception e) {  
            // TODO: handle exception  
        }  
    }  
     
    /**
     * 回滚事务
     * @param conn
     */
    public static void rollbackTransaction (Connection conn) {  
        try {  
            if(conn!=null){  
                if (!conn.getAutoCommit()) {  
                    conn.rollback();  
                }  
            }  
        } catch (Exception e) {  
            // TODO: handle exception  
        }  
    }  
    
    /**
     * 将是否自动提交事务权限取反
     * @param conn
     */
    public static void resetTransaction(Connection conn){  
        try {  
            if(conn!=null)
            {  
                if (conn.getAutoCommit()) {  
                    conn.setAutoCommit(false);  
                }else{  
                    conn.setAutoCommit(true);  
                }  
            }  
        } catch (Exception e) {  
            // TODO: handle exception  
        }  
    }  
    
    /**
     * 主函数,测试使用
     * @param args
     */
    public static void main(String[] args) {
        DbUtil dbUtil=new DbUtil();
        try {
            dbUtil.getCon();
            System.out.println("数据库连接成功!");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("数据库连接失败");
        }
    }
    
    
}

 

posted @ 2017-05-14 12:20  satire  阅读(1168)  评论(0编辑  收藏  举报