JDBC+XML+DOM4J
利用xml文件封装数据库配置信息
xml文件放在src目录下
/testjdbc1/src/DBUtil.xml
<?xml version="1.0" encoding="GBK" ?>
<sxtConfig>
<!-- 本次 连接 mysql 数据库-->
<database-type>mysql</database-type>
<database type="oracle">
<className>oracle.jdbc.driver.OracleDriver</className>
<url>jdbc:oracle:thin:@localhost:1521:orcl</url>
<user>scott</user>
<pwd>tiger</pwd>
</database>
<database type="mysql">
<className>com.mysql.jdbc.Driver</className>
<url>jdbc:mysql://localhost:3306/test</url>
<user>root</user>
<pwd>clc</pwd>
</database>
</sxtConfig>
java文件解析xml文件,封装方法
/testjdbc1/src/dbutil/JDBCUtil.java
package dbutil;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class JDBCUtil {
public static String className;
public static String url ;
public static String user;
public static String pwd ;
/**
* DOM4j解析xml
*/
static {
try {
// 开始解析配置文件
SAXReader saxReader = new SAXReader();
// 以流的方式读取配置文件
InputStream inputStream = JDBUtil.class.getClassLoader().getResourceAsStream("DBUtil.xml");
// 开始配置文件
Document document = saxReader.read(inputStream);
// 获取根节点
Element rootElement = document.getRootElement();
// 获取要选择的数据库类型
String databaseType = rootElement.elementText("database-type");
// 判断数据库类型是否为空
if (databaseType != null) {
// 遍历出数据库的配置信息
List<Element> elements = rootElement.elements("database");
for (Element element : elements) {
// 判断数据库是否一致
if (databaseType.equals(element.attributeValue("type"))) {
// 获取当前元素的所有子元素
className = element.elementText("className");
url = element.elementText("url");
user = element.elementText("user");
pwd = element.elementText("pwd");
}
}
// 使用静态代码块加载驱动
Class.forName(className);
} else {
System.out.println("您的配置文件数据库类型【database-type】有误,请重新配置");
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 创建JDBC连接 connection的连接和事务的提交方式
*/
public static Connection createConnection() {
return createConnection(true);
}
// 事务的提交
private static Connection createConnection(boolean autoCommit) {
// 声明连接
Connection connection = null;
try {
// 获取连接
connection = DriverManager.getConnection(url, user, pwd);
// 事务的提交方式
connection.setAutoCommit(autoCommit);
System.out.println("数据库连接成功");
} catch (SQLException e) {
System.out.println("您的数据库详细配置有误url【" + url + "】user【" + user + "】pwd【" + pwd + "】");
e.printStackTrace();
}
return connection;
}
/**
* 获取发送器 statement
*/
public static Statement createStatemen(Connection connection) {
Statement statement = null;
try {
statement = connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return statement;
}
/**
* 获取预处理发送器
*/
public static PreparedStatement createPreparedStatement(Connection connection, CharSequence sql) {
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return preparedStatement;
}
/**
* 关闭连接connection
*/
private static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 关闭发送器statement
*/
private static void closeStatement(Statement statement) {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 关闭连接resultSet
*/
private static void closeResultSet(ResultSet resultSet) {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 关闭所有连接 connection statement resultSet
*/
public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
closeResultSet(resultSet);
closeStatement(statement);
closeConnection(connection);
}
}
测试连接
package testoracle;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import dbutil.JDBUtil;
public class TestDBUtil {
public static void main(String[] args) {
//声明连接
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
//sql
String sql="SELECT * FROM EMP";
try {
//获取连接
connection=JDBUtil.createConnection();
//获取发送器
statement=JDBUtil.createStatement(connection);
//发送sql语句
resultSet=statement.executeQuery(sql);
while (resultSet.next()) {
System.out.print(resultSet.getString(1)+"\t");
System.out.print(resultSet.getString(2)+"\t");
System.out.print(resultSet.getString(3)+"\t");
System.out.print(resultSet.getString(4)+"\t");
System.out.println(resultSet.getString(5)+"\t");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//关闭连接
JDBUtil.closeAll(statement, connection, resultSet);
} }
}
数据库中插入日期类型的数据的方式:
preparedStatement.setTimestamp(2, new java.sql.Timestamp(user.getUpdateTime().getTime()));
JDBC+XML+DOM4J的更多相关文章
- JDBC/XML的一些基本使用
原文:JDBC/XML的一些基本使用 一.知识点题目:JDBC核心API的使用 关键字:JDBC核心API 内容: 1)加载JDBC驱动: Oracle:Class.forName(“oracle.j ...
- (转)Android 创建与解析XML—— Dom4j方式 .
转:http://blog.csdn.net/ithomer/article/details/7521605 1.Dom4j概述 dom4j is an easy to use, open sourc ...
- Java知识总结--JDBC&XML
1说说jdbc连接数据库的步骤 1.注册驱动 2.获得连接 3.执行sql语句 4.获得结果集,进行结果集的处理 5.关闭结果集 6.关闭连接,释放资源 2 statement 和preparedst ...
- XML,dom4j和Java
看了“罗辑思维”的节目,终于克服了自己的拖延症,开始动笔写这篇文章了. 写这篇文章的目的是把XML的解析,萃取和验证都尽量覆盖一下,存储以便日后备考,使用的包是dom4j,涉及语言是Java. dom ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- java使用dom4j解析xml文件
关于xml的知识,及作用什么的就不说了,直接解释如何使用dom4j解析.假如有如下xml: dom4j解析xml其实很简单,只要你有点java基础,知道xml文件.结合下面的xml文件和java代码, ...
- xml(3)--dom4j实现crud操作
1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方 ...
- DOM4J生成、解析XML实例
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ...
- dom4j创建和解析xml文档
DOM4J解析 特征: 1.JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能. 2.它使用接口和抽象基本类方法. 3.具有性能优异.灵活性好.功能强大和极端易用的特点. 4.是一个开 ...
随机推荐
- list、tuple、dict内部功能释义
一.list内部功能释义 运用频次:☆☆☆☆☆ 1. append():列表末尾插入元素 [示例] >>> L1=[11,22,33] >>> L1.append( ...
- 图的最小生成树——Prim算法
Prim算法 Prim算法求最小生成树是采取蓝白点的思想,白点代表已经加入最小生成树的点,蓝点表示未加入最小生成树的点. 进行n次循环,每次循环把一个蓝点变为白点,该蓝点应该是与白点相连的最小边权的是 ...
- HDU-2159 FATE,01背包变形
FATE 这道题和完全背包十分类似,只不过加上了忍耐度这个条件限制,所以很正常的想到用三维数组来模拟.但背包问题优化只有一层循环,这里当然也可以把种类这一层省略.d[i][j]表示杀i只怪耗费忍耐度为 ...
- SQL ROW_NUMBER() 通用分页存储过程
--提取分页数据,返回总记录数 Create procedure [dbo].[sp_Common_GetDataPaging_ReturnDataCount] ( @SqlString varcha ...
- GO 语言周报【七月第 1 期】
TIOBE 七月排名 Go 进入前十 TIOBE 七月头条:Go 语言达到历史最高并进入前十.对于 Go 语言来说,这是一个里程碑时刻,我们可以更大胆地想象,它下一步的发展会达到怎样的高度.Go 是否 ...
- 如何打开Oracle的dmp文件
在工作中经常使用到别人提供过来的dmp文件,由于不知道备份时所用的用户名,这样就不能恢复. 通过打开DMP文件可以查看到备份时使用的用户名. 1.如果dmp文件比较小,用文本编辑器打开就可以了. 2. ...
- Codevs 2693 上学路线(施工)
时间限制: 2 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 问题描述 你所在的城市街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道. 南 ...
- HDU 5695 Gym Class
拓扑排序. #include<cstdio> #include <iostream> #include<cstring> #include<cmath> ...
- Codeforces 920G(二分+容斥)
题意: 定义F(x,p)表示的是一个数列{y},其中gcd(y,p)=1且y>x 给出x,p,k,求出F(x,p)的第k项 x,p,k<=10^6 分析: 很容易想到先二分,再做差 然后问 ...
- 学习swift从青铜到王者之swift闭包06
语法表达式 一般形式:{ (parameters) -> returnType in statements } 这里的参数(parameters),可以是in-out(输入输出参数),但不能设定 ...