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 ...
随机推荐
- nyoj 667 碟战 最小割(最大流)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=677 题意转化:将点0与所有的有间谍的点相连,则题意变为求点0到点n的最小割,直接套最大流 ...
- VMware 12Pro 安装MACOS 10.10
前言 最近帮人MacBook PRO重新安装了下10.10,在加上用了IP6,对苹果系统很有好感,所以想自己装个mac系统玩一下.虽然有了surface pro3 但是看了时间久了厌了,好想买个MAC ...
- java 方法参数-值调用,引用调用问题
(博客内容来自于core java卷一) 1. xx调用:程序设计语言中方法参数的传递方式: 引用调用(call by reference):表示方法接收的是调用者提供的变量地址. 值调用(call ...
- 用javascript得到客户端IP的新方法
javascript得到客户端IP的新方法 很久以来,我都是经过http://fw.qq.com/ipaddress来得到客户端用户的IP,这个方法简单.快速.实用 . 我们调用它的写法是: < ...
- 深入.NET框架 项目《魔兽登录系统》
创建魔兽系统相关窗体: 登录窗体(frmLogin) 注册窗体(frmRegister) 主窗体 (frmMain) 实现魔兽登录系统: 登录的界面如下 实现思路: 1.创建一个对象数组,长度为1 ...
- Python创建Cocos2d-x 2.2方法
把创建项目做成一个批处理,当创建项目时可以省时省力很多. 操作步骤 1.在 E:\cocos2d-x-2.2.1\tools\project-creator 目录下创建 create_project. ...
- bundle是什么?
bundle就是一个数据对象,像Map,HashMap一样key-value键值对的方式存放数据.在android中用于应用程序之间数据传输,不过是要靠对象使用的 谢谢,又知道了一种在Activity ...
- Python进阶-面向对象
类的成员 类的成员可以分为三类:字段.方法.属性 一:字段: 普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同 普通字段属于对象 静态字段属于类 字段的定义和使用 ...
- gridControl控件动态绑定列
DataTable dt = =Query.GetCustome=(ref customColumnCount); //绑定列 gridView.Columns.Add(}); gridView.Co ...
- Android动画原理分析
最近在Android上做了一些动画效果,网上查了一些资料,有各种各样的使用方式,于是乘热打铁,想具体分析一下动画是如何实现的,Animation, Animator都有哪些区别等等. 首先说Anima ...