jdbc基础 (二) 从配置文件中读取连接数据库

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

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

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

 1 package com.cream.ice.jdbc;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.sql.Connection;
 6 import java.sql.DriverManager;
 7 import java.sql.ResultSet;
 8 import java.sql.SQLException;
 9 import java.sql.Statement;
10 import java.util.Properties;
11
12 public class JdbcUtils {
13
14     private static String driverName;
15     private static String url;
16     private static String user;
17     private static String password;
18
19     /*
20      * 静态代码块,类初始化时加载数据库驱动
21      */
22     static {
23         try {
24             // 加载dbinfo.properties配置文件
25             InputStream in = JdbcUtils.class.getClassLoader()
26                     .getResourceAsStream("dbinfo.properties");
27             Properties properties = new Properties();
28             properties.load(in);
29
30             // 获取驱动名称、url、用户名以及密码
31             driverName = properties.getProperty("driverName");
32             url = properties.getProperty("url");
33             user = properties.getProperty("user");
34             password = properties.getProperty("password");
35
36             // 加载驱动
37             Class.forName(driverName);
38
39         } catch (IOException e) {
40             e.printStackTrace();
41         } catch (ClassNotFoundException e) {
42             e.printStackTrace();
43         }
44     }
45
46     /*
47      * 获取连接
48      */
49     public static Connection getConnection() throws SQLException {
50
51         return DriverManager.getConnection(url, user, password);
52
53     }
54
55     /*
56      * 释放资源
57      */
58     public static void releaseResources(ResultSet resultSet,
59             Statement statement, Connection connection) {
60
61         try {
62             if (resultSet != null)
63                 resultSet.close();
64         } catch (SQLException e) {
65             e.printStackTrace();
66         } finally {
67             resultSet = null;
68             try {
69                 if (statement != null)
70                     statement.close();
71             } catch (SQLException e) {
72                 e.printStackTrace();
73             } finally {
74                 statement = null;
75                 try {
76                     if (connection != null)
77                         connection.close();
78                 } catch (SQLException e) {
79                     e.printStackTrace();
80                 } finally {
81                     connection = null;
82                 }
83             }
84         }
85
86     }
87
88 }

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

1 driverName=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/jdbc
3 user=root
4 password=01050233

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

JdbcCURD.java代码如下:

 1 package com.cream.ice.jdbc;
 2
 3 import java.sql.Connection;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7
 8 public class JdbcCURD {
 9
10     private Connection connection;
11     private Statement statement;
12     private ResultSet resultSet;
13
14     //更新操作
15     public void update(String sql) {
16         try {
17             connection = JdbcUtils.getConnection();
18             statement = connection.createStatement();
19             //可执行创建、修改、删除表,添加、删除、修改元组以及查询sql语句
20             statement.execute(sql);
21         } catch (SQLException e) {
22             e.printStackTrace();
23         } finally {
24             JdbcUtils.releaseResources(resultSet, statement, connection);
25         }
26     }
27
28     //查询操作
29     public void Query(String sql) {
30         try {
31             connection = JdbcUtils.getConnection();
32             statement = connection.createStatement();
33             resultSet = statement.executeQuery(sql);
34
35             while(resultSet.next()){
36                 System.out.println("name:"+resultSet.getString("name"));
37                 System.out.println("id:"+resultSet.getString("Tid"));
38             }
39
40         } catch (SQLException e) {
41             e.printStackTrace();
42         } finally {
43             JdbcUtils.releaseResources(resultSet, statement, connection);
44         }
45     }
46
47     //添加操作
48     public void addElement(String sql) {
49         update(sql);
50     }
51
52     //删除操作
53     public void removeElement(String sql) {
54         update(sql);
55     }
56
57     //创建一个表
58     public void createTable(String sql){
59         update(sql);
60     }
61
62     //删除一个表
63     public void dropTable(String sql){
64         update(sql);
65     }
66
67 }

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

 1 package com.cream.ice.jdbc;
 2
 3 import java.sql.SQLException;
 4
 5 public class JdbcTest {
 6
 7     public static void main(String[] args) throws ClassNotFoundException,
 8             SQLException {
 9
10         JdbcCURD curd=new JdbcCURD();
11
12         String sql = null;
13
14         //添加表Teacher
15         sql="create table Teacher (Tid char(9) primary key,name char(9) unique)";
16         curd.createTable(sql);
17
18         //添加元组
19         sql = "insert into Teacher (Tid,name) values (‘0001‘,‘Tom‘)";
20         curd.addElement(sql);
21
22         //查询Teacher表
23         sql="select * from Teacher";
24         curd.Query(sql);
25
26         //删除元组
27         sql="delete from Teacher where Tid=‘0001‘";
28         curd.removeElement(sql);
29
30         //删除表Teacher
31         sql="drop table Teacher";
32         curd.dropTable(sql);
33     }
34
35 }

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

1 name:Tom
2 id:0001

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

时间: 2024-08-29 20:51:09

jdbc基础 (二) 从配置文件中读取连接数据库的相关文章

Java关于Properties用法(二)——替换配置文件中的参数

上一章讲了配置文件的基本用法,虽然上一章已经可以解决一些需求,但还不些不足之处.假如,配置文件里面的字符串有一部分需要经常变动,另外一些不需要,上一章的方法就不方便了,所以这章主要讲如何在配置文件中使用参数,然后替换字符串里面的参数值. 一.使用类MessageFormat替换配置文件中的参数 MessageFormat 提供了以与语言无关方式生成连接消息的方式.使用此方法构造向终端用户显示的消息. MessageFormat 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适

SpringBoot 中从yml配置文件中读取常用的参数值

SpringBoot现在基本上都是使用application-XXX.yml(生产环境为pro,开发测试环境为dev)来配置项目中的一些配置条件,在springboot中还可以通过从yml文件中将yml中的数据直接读取出来. 1.yml文件(这里设置参数的时候往往设置两层前缀,避免在调用的时候该属性中的部分参数名与计算机中的某些名字冲突) test: person: lastName: hello age: 18 boss: false birth: 2017/12/12 maps: {k1:

经典算法题-基础-二维数组中的查找

目录 问题描述 解题思路 相关代码 问题描述 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 要求 时间限制:1秒 空间限制:32768K 方法原型 public boolean find(int target, int [][] array) 输入输出例子 在以下二维数组中 { {1,2,8,9}, {2,4,9,12}, {4,7,10,

【SSM整合】spring配置文件中读取配置文件的三种方式

目录 依赖 jdbc.properties applicationContext.xml(spring配置文件) 依赖 <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <

监听tomcat服务器启动/关闭并从配置文件中读取参数进行初始化

监听tomcat服务器启动/关闭很简单(2步): 1. 建立一个类实现ServletContextListener接口,重写其中的方法(contextDestroyed和contextInitialized). package action; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class SystemListener implements Se

JDBC基础二

1.配置文件:dbinfo.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/test username=root password=root 2.DBUtils.java package com.mf.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impo

从配置文件中读取数据获取Connection

配置文件 db.driver=com.mysql.jdbc.Driver db.url=jdbc\:mysql\://localhost\:3306/mybase db.user=root db.pswd=[email protected] #-- 连接池初始化连接数 -- dataSource.initialSize=10 #-- 最大空闲连接 -- dataSource.maxIdle=20 #-- 最小空闲连接 -- dataSource.minIdle=5 #-- 最大连接数 -- da

Flask基础(二)---模板渲染中的过滤器定义

Flask中模板渲染中过滤器的定义: from flask import Flask,render_template app = Flask(__name__) @app.route("/") def index(): return render_template("temp-demo2.html") # 方式一 # 自定义过滤器函数,命名不能与内置过滤器重名,不然会覆盖 # 自定义列表切片过滤器 def li_setup2(li): # 按照步长为2进行模板切片

从配置文件中读取变量