###JDBC通过文件读取加载方式连接数据库(以MySQL为例)
前言: 在java项目开发中,必然会经常使用到数据库连接,并且数据库的种类也不尽相同,另外JDBC(java DataBase Connectivity :java数据库连接)的方式也有很多种方式。所以本博文是以文件读取加载方式连接数据库,这种方式的好处在于当数据库驱动,地址或者用户名密码发生变动时,只需要在文件里改动即可,而不需要在代码里改动,这也很好体现了代码的封装性原则。
废话少说,先在eclipse里建立个名为JDBCtest的项目同时导入mysql-connector的文件包(文件包下载及导入方法就自行百度吧)。
在src文件下建立一个包名为util的工具包(在项目开发里,很有必要对代码进行模块化分类,所以像数据库连接这类工具型代码就应放在一个专门存放工具类的包里),接着在util工具包下建立一个名为DbUtil的类。再建立一个包名为Test的测试包,并在里面建一个TestDbutil的类,后面会在里面写main主方法进行测试数据库连接。
另外在项目文件处建立一个与src同级的Sourse Folder的文件取名为sof,并在文件中建立一个名为Db.properties的资源文件。
如图所示:
#####到此,我们就建立好了基本的目录文件结构。
#####接着先写好工具类,即在DbUtil.java类中填码
1.在DbUtil.java类中定义私有属性:
//数据库驱动
private static String Driver="";
//数据库地址
private static String url="";
//数据库用户名
private static String userName="";
//数据库密码
private static String password="";
2.创建static静态代码块,项目启动的时候就执行加载数据库连接的必要配置文件信息。
static {
Properties p=new Properties();
try {
//通过相对路径加载文件
p.load(new FileInputStream(new File("cof/Db.properties")));
//用getProperty方法通过关键字获取信息
Driver = p.getProperty("Driver");
url = p.getProperty("url");
userName = p.getProperty("userName");
password = p.getProperty("password");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
3.创建数据库连接的方法体
//获取数据库连接
public Connection getConn(){
Connection conn=null;
try {
//加载驱动
Class.forName(Driver);
//获取数据库连接
conn=DriverManager.getConnection(url,userName,password);
}
catch (SQLException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e){
e.printStackTrace();
}
return conn;
}
4.创建关闭数据库连接的方法体
//关闭数据库资源
public void closeAll(ResultSet rs,Statement stat,Connection conn){
/*分别按顺序关闭数据库的结果集资源,Statement 对象资源以及Connection 连接数据库对象*/
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stat!=null){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
一个简单的java数据库连接工具类就这样了
####接下来就是配置文件的设定了
因为我们是以连接MySQL数据库为例子的,并且是以本地电脑进行的测试,路径连接的是本地的一个名为sasa的数据库,且mysql的用户密码都是默认的root,所以在Db.properties文件里的配置信息也就确定了(读者如要进行测试可能会需要进行相应修改)。本人的配置信息就如下了:
Driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/sasa
userName=root
password=root
最后终于可以进行下测试了
因为本文的主要目的是用文件加载方式连接数据库,所以在测试连接时会比较简单,我打算在在连接数据库成功后在控制台中输出一个数据库表的内容,如下图所示,是我用Navicat数据库管理工具打开的一个表内容。
我们现在要做的就是在TestDbutil类中运用DbUtil工具包连接数据库,并输出表格内容。
public class TestDbutil {
public static void main(String[] args) {
//new一个DbUtil对象从而得到连接数据库的方法
DbUtil util = new DbUtil();
Connection conn = util.getConn();
//操作数据库
String sql ="select * from person";
ResultSet rs =null;
PreparedStatement ptp=null;
try {
ptp= conn.prepareStatement(sql);
rs= ptp.executeQuery();
System.out.println("ID"+"\40 "+"姓名"+" \40 "+"年龄"+"\40 "+"性别");
while(rs.next()){
int id = rs.getInt("personID");
String name = rs.getString("userName");
int age = rs.getInt("age");
String sex = rs.getString("sex");
System.out.println(id+" \40 "+name+" \40 "+age+" \40 "+sex);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭数据库资源
util.closeAll(rs, ptp, conn);
}
}
}
进行测试的结果就如下了:
注:上面的代码可能没有完整展现出来,而且需要导的包也没有显示出来,所以我上传了这个测试的一个Demo和一个mysql数据表。
连接:http://download.csdn.net/detail/u013077446/9078583