jdbc基础 (二) 通过properties配置文件连接数据库

来源:互联网 发布:php httprequest类 编辑:程序博客网 时间:2024/05/21 10:03

上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用。

因为jdbc对数据库的驱动加载、连接获取、释放资源的代码都是相同的,为了提高代码的复用性,我们可以写一个工具类,将数据库驱动加载、获取连接、资源释放的代码封装起来。同时,为了提高工具类的灵活性,可以将数据库的驱动、url、用户名、密码等信息以键值对的形式存放在properties文件中,工具类初始化时从配置文件中读取所要连接数据库的信息。当需要更改连接的数据库时,只需要更改配置文件即可,而不必改写工具类的代码。

下面是工具类代码的实现:

package com.cream.ice.jdbc;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class JdbcUtils {    private static String driverName;    private static String url;    private static String user;    private static String password;    /*     * 静态代码块,类初始化时加载数据库驱动     */    static {        try {            // 加载dbinfo.properties配置文件            InputStream in = JdbcUtils.class.getClassLoader()                    .getResourceAsStream("dbinfo.properties");            Properties properties = new Properties();            properties.load(in);            // 获取驱动名称、url、用户名以及密码            driverName = properties.getProperty("driverName");            url = properties.getProperty("url");            user = properties.getProperty("user");            password = properties.getProperty("password");            // 加载驱动            Class.forName(driverName);                    } catch (IOException e) {            e.printStackTrace();        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }    /*     * 获取连接     */    public static Connection getConnection() throws SQLException {        return DriverManager.getConnection(url, user, password);    }    /*     * 释放资源     */    public static void releaseResources(ResultSet resultSet,            Statement statement, Connection connection) {        try {            if (resultSet != null)                resultSet.close();        } catch (SQLException e) {            e.printStackTrace();        } finally {            resultSet = null;            try {                if (statement != null)                    statement.close();            } catch (SQLException e) {                e.printStackTrace();            } finally {                statement = null;                try {                    if (connection != null)                        connection.close();                } catch (SQLException e) {                    e.printStackTrace();                } finally {                    connection = null;                }            }        }    }}

这里dbinfo.properties文件中信息如下,读者可自行更改:

driverName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/jdbcuser=rootpassword=01050233

这里我们来举个例子使用工具类。我们写一个类JdbcCURD实现对特定数据库的增删改查操作,并在main函数中使用。

JdbcCURD.java代码如下:

package com.cream.ice.jdbc;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JdbcCURD {    private Connection connection;    private Statement statement;    private ResultSet resultSet;    //更新操作    public void update(String sql) {        try {            connection = JdbcUtils.getConnection();            statement = connection.createStatement();            //可执行创建、修改、删除表,添加、删除、修改元组以及查询sql语句            statement.execute(sql);        } catch (SQLException e) {            e.printStackTrace();        } finally {            JdbcUtils.releaseResources(resultSet, statement, connection);        }    }        //查询操作    public void Query(String sql) {        try {            connection = JdbcUtils.getConnection();            statement = connection.createStatement();            resultSet = statement.executeQuery(sql);                        while(resultSet.next()){                System.out.println("name:"+resultSet.getString("name"));                System.out.println("id:"+resultSet.getString("Tid"));            }                    } catch (SQLException e) {            e.printStackTrace();        } finally {            JdbcUtils.releaseResources(resultSet, statement, connection);        }    }        //添加操作    public void addElement(String sql) {        update(sql);    }        //删除操作    public void removeElement(String sql) {        update(sql);    }    //创建一个表    public void createTable(String sql){        update(sql);    }        //删除一个表    public void dropTable(String sql){        update(sql);    }}

我们来写一个main函数来测试:

package com.cream.ice.jdbc;import java.sql.SQLException;public class JdbcTest {        public static void main(String[] args) throws ClassNotFoundException,            SQLException {                JdbcCURD curd=new JdbcCURD();        String sql = null;                //添加表Teacher        sql="create table Teacher (Tid char(9) primary key,name char(9) unique)";        curd.createTable(sql);                //添加元组        sql = "insert into Teacher (Tid,name) values ('0001','Tom')";        curd.addElement(sql);                //查询Teacher表        sql="select * from Teacher";        curd.Query(sql);                //删除元组        sql="delete from Teacher where Tid='0001'";        curd.removeElement(sql);                //删除表Teacher        sql="drop table Teacher";        curd.dropTable(sql);    }}

经测试,将在控制台输出下列信息:

name:Tomid:0001

与上一篇中对数据库的操作相比,从配置文件中读取要连接数据库的信息,大大提高了代码的复用性以及灵活性,省去了当更改数据库时还要更改代码的麻烦。

1 1
原创粉丝点击