接着上一个testdemo1.java程序
新建一个DBUtil.java,代码如下:
package my_sql_test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
driver="com.mysql.jdbc.Driver";
url="jdbc:mysql://localhost:3306/tree";
username="root";
password="wonshy123..";
}
public static Connection open(){
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
return DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void close(Connection conn){
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这样就可以把connection的打开和关闭与真正代码分开啦,同时testdemo1.java代码变成如下
package my_sql_test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class testdemo1 {
public static void main(String[] args){
/*Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/tree","root","wonshy123..");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
Connection conn=DBUtil.open();
String sql="select * from book";
try {
Statement stmt=conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id=rs.getInt(1);
String name=rs.getString(2);
System.out.println(name);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
/*if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
DBUtil.close(conn);
}
}
}
再有就是,通过配置文件修改DBUitl.java中文档的字符串获取方式,具体如下
在src下创建文件config.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/tree
username=root
password=wonshy123..
不能有空格和引号哦
然后就是修改DBUtil下的文件
package my_sql_test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DBUtil {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
Properties prop=new Properties();
try {
Reader in=new FileReader("src\\config.properties");
prop.load(in);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driver=prop.getProperty("driver");
url=prop.getProperty("url");
username=prop.getProperty("username");
password=prop.getProperty("password");
}
public static Connection open(){
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
return DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void close(Connection conn){
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这样也ok的哟