引言:本人学生一枚,接触编程有2年了。以前都是马马虎虎的,东西存的到处都是,但还好也找得到。
最近算是开窍了,学习有时候还是需要记下来的,恰好在学习JDBC这部分的内容,
于是整理整理,也给各位客官一个参考。个人水平有限,有不对、不恰当的地方欢迎指正!
备注:代码在MyEclipse下运行通过,可成功连接MySql数据库。
环境:
- 机器环境:windows 7 64 bit
- JDK:1.6
- 数据库:MySQL 5.0(界面:SQLyog v10.2)
- IDE:MyEclipse 9.0 M1
- 连接MySQL数据库jar包:mysql-connector-java-5.1.7-bin.jar
正文:
连接数据库(以MySQL为例)主要有以下步骤:
1、导入jar包 2、加载驱动 3、创建连接字符串 4、连接5、释放连接
这是很常规的做法,但这种方法有点小小的问题。首先,不安全,有关数据库的id和密码都写在代码里
都是明文,再者,不利于移植,修改麻烦,当数据库发生变化时,所有相关的代码都需要修改。我在写的时候,
稍作了修改,即将连接字符串均封装到资源文件中,在代码中通过载入资源文件获得连接数据库的相关信息。
1、创建工程(java project)
2、导入jar包
将jar包导入工程lib目录下
3、创建ConnDatabase类
package com.zjl.conn;
import java.io.IOException;
public class ConnDatebase {
private static String driver=null;//驱动字符串
private static String url=null;//url
private static String user=null;//数据库用户名
private static String password=null;//数据库密码
}
4、创建资源文件,封装连接字符串
5、载入、读取资源文件
//初始化器
static {
//1.创建一个Properties的实例
Properties pr = new Properties();
//2.载入资源文件
try {
pr.load(ConnDatebase.class.getResourceAsStream("jdbc.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3.读取资源文件信息
driver=pr.getProperty("driver");
url = pr.getProperty("url");
user = pr.getProperty("user");
password = pr.getProperty("password");
}
//初始化器
static {
//1.创建一个Properties的实例
Properties pr = new Properties();
//2.载入资源文件
try {
pr.load(ConnDatebase.class.getResourceAsStream("jdbc.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3.读取资源文件信息
driver=pr.getProperty("driver");
url = pr.getProperty("url");
user = pr.getProperty("user");
password = pr.getProperty("password");
}
6、连接数据库
//1、连接数据库
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("加载驱动异常");
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接数据库异常");
e.printStackTrace();
}
return conn;
}
7、释放连接
//2、释放连接
public static void release(Connection conn,Statement st,ResultSet rs){
try{
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(conn!=null)
conn.close();
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
8、测试连接
全部代码如下:
package com.zjl.conn;
import java.io.IOException;
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 ConnDatebase {
private static String driver=null;//驱动字符串
private static String url=null;//url
private static String user=null;//数据库用户名
private static String password=null;//数据库密码
//使用初始化器初始化
static {
//1.创建一个Properties的实例
Properties pr = new Properties();
//2.载入资源文件
try {
pr.load(ConnDatebase.class.getResourceAsStream("jdbc.properties"));
} catch (IOException e) {
system.out.println("载入资源文件异常");
e.printStackTrace();
}
//3.读取资源文件信息
driver=pr.getProperty("driver");
url = pr.getProperty("url");
user = pr.getProperty("user");
password = pr.getProperty("password");
}
//1、连接数据库
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
System.out.println("加载驱动异常");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("连接数据库异常");
e.printStackTrace();
}
return conn;
}
//2、释放连接
public static void release(Connection conn,Statement st,ResultSet rs){
try{
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(conn!=null)
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
//1、连接数据库
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
System.out.println("加载驱动异常");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("连接数据库异常");
e.printStackTrace();
}
return conn;
}
//2、释放连接
public static void release(Connection conn,Statement st,ResultSet rs){
try{
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(conn!=null)
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}