数据库连接及操作类 ConnDB

公共模块:数据库连接及操作类

  1. 连接数据库的方法getConnection()
  2. 执行查询语句方法executeQuery()
  3. 执行更新操作方法executeUpdate()
  4. 关闭数据库连接的方法close()
package com.core;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Properties;


public class ConnDB {
    public Connection conn=null;        //声明Connection对象的实例
    public java.sql.Statement stmt =null;        //声明Statement对象的实例
    public ResultSet rs =null;          //声明ResultSet对象的实例
    private static String propFileName="/com/connDB.properties"; //创建并实例化propFileName对象的实例
    private static Properties prop=new Properties();  //定义保存数据库驱动的变量
    private static String dbClassName="com.mysql.jdbc.Driver";
    private static String dbUrl="jdbc:mysql://117.0.0.1:3306/db_library?user=root&password=1234&useUnnicode=true";
    public ConnDB() {            //构造方法
        try {
            InputStream in = getClass().getResourceAsStream(propFileName);
            //将properties文件读取到InputStream对象中
            prop.load(in); 
            //通过输入流对象加载properties文件
            dbClassName=prop.getProperty("DB_CLASS_NAME");
            //获取数据库驱动
            dbUrl=prop.getProperty("DB_URL",dbUrl);
            //获取连接的URL
        } catch (Exception e) {
            System.err.println("jdbc连接异常");
            e.printStackTrace();         //输出异常信息
        }
    }
    /**
     * 连接数据库的方法
     * @return Connection  返回数据库连接对象的实例
     */
    public static Connection getConnection(){
        Connection conn=null;
        try {
            Class.forName(dbClassName).newInstance(); //装载数据库驱动

            conn=DriverManager.getConnection(dbUrl);
            //建立要数据库之间的连接
        } catch (Exception e) {
            e.printStackTrace();           //输出异常信息
        }
        if (conn==null) {
            System.err.println("警告:DriverManager.getConnection()获取数据库链接失败。"
                    + "\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl);
            //在控制台输出连接失败提示信息
        }
        return conn;        //返回数据库连接对象
    }
    /**
     * 执行查询语句的方法
     * @return ResultSet 结果集对象
     */
    public ResultSet executeQuery(String sql) {
         conn = getConnection();
         //调用getConnection()方法获取一个实例conn
         try {
            stmt= conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
                    ResultSet.CONCUR_READ_ONLY);
            rs  = stmt.executeQuery(sql);
        } catch (Exception e) {
            e.printStackTrace();          //输出异常信息
        }
        return rs;  //返回结果集对象
    }
    /**
     * 执行更新操作的方法
     * @param sql
     * @return  int  更新的行数
     */ 
    public int executeUpdate(String sql){
        int result=0;     //定义保存返回值的变量
         conn = getConnection();     //调用getConnection()方法构造Connection对象的一个实例
         try {
            stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                     ResultSet.CONCUR_READ_ONLY);
            result=stmt.executeUpdate(sql);         //执行更新操作
        } catch (Exception e) {
            result=0;                               //将返回值的变量赋值为0
        }
        return result;          //返回保存返回值的变量
    }
    /**
     * 关闭数据库的方法无返回值
     */
    public void close(){
        try {
            if (rs!=null) {        //当ResultSet对象的实例rs不为空时
                rs.close();         //关闭ResultSet对象
            }
            if (stmt!=null) {        //当Statement对象的实例stmt不为空时
                stmt.close();       //关闭Statement对象
            }
            if (conn!=null) {       //当Connection对象的实例conn不为空时
                conn.close();       //关闭Connection对象
            }
        } catch (Exception e) {
            e.printStackTrace();       //输出异常信息
        }
    }
}

其中为了移植的方便,数据库连接所需的信息保存在文件connDB.properties中并保存在com包下。connDB.properties文件内容如下:

# DB_CLASS_NAME(驱动的类的类名)
DB_CLASS_NAME=com.mysql.jdbc.Driver
#DB_URL(要连接数据库的地址)
DB_URL=jdbc:mysql://117.0.0.1:3306/db_library?user=root&password=1234&useUnnicode=true

我的博客网站:http://huyuxin.top/欢迎大家访问!评论!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值