jdbc基础 (二) 通过properties配置文件连接数据库
csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库
上一篇描述了对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.Driver
url=jdbc:mysql://localhost:3306/jdbc
user=root
password=123456
这里我们来举个例子使用工具类。我们写一个类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:Tom
id:0001
与上一篇中对数据库的操作相比,从配置文件中读取要连接数据库的信息,大大提高了代码的复用性以及灵活性,省去了当更改数据库时还要更改代码的麻烦。
jdbc基础 (二) 通过properties配置文件连接数据库的更多相关文章
- Java之JDBC 通过加载properties配置文件连接数据库
通常情况下,我们通过JDBC连接数据库的时候,不会将数据库相关配置写死,因为到时候数据库一有改动,就要重新打包部署到服务器或者替换相关的.class文件,这样非常不灵活.因此,咱们一般会通过读取配置文 ...
- JDBC基础二
1.配置文件:dbinfo.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/test user ...
- jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用
一.连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数 ...
- jdbc基础 (四) 批处理
批处理,就是字面上的意思,一次性处理一批sql语句. 直接看例子吧: package com.cream.ice.jdbc; import java.sql.Connection; import ja ...
- SpringBoot学习:获取yml和properties配置文件的内容
项目下载地址:http://download.csdn.net/detail/aqsunkai/9805821 (一)yml配置文件: pom.xml加入依赖: <!-- 支持 @Configu ...
- SpringBoot学习:获取yml和properties配置文件的内容(转)
项目下载地址:http://download.csdn.net/detail/aqsunkai/9805821 (一)yml配置文件: pom.xml加入依赖: <!-- 支持 @Configu ...
- SpringBoot学习:获取yml和properties配置文件的内容(转)
项目下载地址:http://download.csdn.net/detail/aqsunkai/9805821 (一)yml配置文件: pom.xml加入依赖: <!-- 支持 @Configu ...
- 复习课程jdbc:使用配置文件properties进行连接数据库,数据库存取图片,批处理,时间戳,事物回滚等等
使用配置文件properties进行连接数据库 首先创建一个file自定义文件名,但是后缀名必须改为.properties(不分大小写):如config.properties: 然后双击config. ...
- java jdbc使用配置文件连接数据库:
java jdbc使用配置文件连接数据库: 创建后缀名为:.properties的文件,文件内容包括,数据库驱动.连接的数据库地址.用户名.密码…… 以Mysql为例创建config.properti ...
随机推荐
- Javascript中replace()的一些用法总结
关于定义 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 关于语法 stringObject.replace(regexp/substr,repla ...
- Android开发之 Android应用程序详细解析
我们继续的沿用上一篇所建立的应用. Android应用程序可以分为:应用程序源代码(.java),应用程序描述文件(.xml),各种资源. 可以这么理解: 安卓应用程序,通过java代码来实现其业务逻 ...
- SSH 端口映射(一)
转载:http://blog.csdn.net/a351945755/article/details/21785647,http://blog.csdn.net/gaoming655/article/ ...
- Flume practices and sqoop hive 2 oracle
#receive the file flume-ng agent --conf conf --conf-file conf1.conf --name a1 flume-ng agent --conf ...
- [转]ASP.NET MVC 4 (九) 模型绑定
本文转自:http://www.cnblogs.com/duanshuiliu/p/3706701.html 模型绑定指的是MVC从浏览器发送的HTTP请求中为我们创建.NET对象,在HTTP请求和C ...
- 数论+spfa算法 bzoj 2118 墨墨的等式
2118: 墨墨的等式 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1283 Solved: 496 Description 墨墨突然对等式很感兴 ...
- 边工作边刷题:70天一遍leetcode: day 82-1
Closest Binary Search Tree Value II 要点:通过iterator,把closest值附近的k个closest找到,从而time降为O(klgn) in order i ...
- Dijkstra求最短路径
单源点的最短路径问题:给定带权有向图G和源点V,求从V到G中其余各顶点的最短路径 Dijkstra算法描述如下: (1)用带权的邻接矩阵arcs表示有向图,arcs[i][j]表示弧<vi,vj ...
- vector中pair的排序方法
直接上代码: bool judge(const pair<int,char> a, const pair<int ,char> b) { return a.first<b ...
- JMeter学习(十八)JMeter测试Java(二)
实例: 服务为:将输入的两个参数通过IO存入文件: 1.打开MyEclipse,编写Java代码 服务: package test; import java.io.File; import java. ...