【JDBCutils】工具類
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 實現JDBC的工具類
* 定義方法直接返回數據庫的連接對象
* 定義關閉資源的方法
*/
public class JDBCutils {
private JDBCutils(){}
private static Connection con;
static{
try{
// 1. 註冊驅動
Class.forName("com.mysql.jdbc.Driver");
// 2. 獲得數據連接
String url = "jdbc:mysql://localhost:3306/mybase1";
String user = "root"; // 數據庫賬戶
String password = "123"; // 數據庫密碼
con = DriverManager.getConnection(url, user, password);
}catch(Exception ex){
throw new RuntimeException(ex+"數據庫連接失敗");
}
}
// 定義靜態方法,返回數據庫的連接對象
public static Connection getConnection(){
return con;
}
// 定義關閉方法
public static void close(Connection con, Statement stat, ResultSet pst){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
pst.close();
} catch (SQLException ex) {}
}
}
// 關閉方法重載
public static void close(Connection con, Statement stat){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/*
* 使用JDBCutils工具類,
*/
public class JDBCTest1 {
public static void main(String[] args) throws Exception {
// 調用JDBCutils工具類方法getConection() 獲得數據庫連接對象
Connection con = JDBCutils.getConnection();
// 調用數據庫的連接對象con的方法prepareStatement() 對SQL語句進行預編譯
PreparedStatement pst = con.prepareStatement("SELECT * FROM sort1");
// 調用pst方法executeQuery()執行SQL語句
ResultSet rs = pst.executeQuery();
// 對結果對象進行處理
while(rs.next()){
System.out.println(rs.getString("sid")+" "+rs.getString("sname")+" "+rs.getString("sprice")
+" "+rs.getString("sdesc"));
}
// 關閉資源
JDBCutils.close(con, pst, rs);
}
}
【數據表結果集放入集合中】
/*
* 數據表Sort1 對應java中Sort類
* 數據表中的列名 sid sname sprice sdesc 對應java中的Sort類的成員變量
*/
public class Sort {
private int sid;
private String sname;
private double sprice;
private String sdesc;
// 構造方法
public Sort(){}
public Sort(int sid, String sname, double sprice, String sdesc) {
this.sid = sid;
this.sname = sname;
this.sprice = sprice;
this.sdesc = sdesc;
}
// getXX,setXX方法
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public double getSprice() {
return sprice;
}
public void setSprice(double sprice) {
this.sprice = sprice;
}
public String getSdesc() {
return sdesc;
}
public void setSdesc(String sdesc) {
this.sdesc = sdesc;
}
@Override
public String toString() {
return "Sort [sid=" + sid + ", sname=" + sname + ", sprice=" + sprice
+ ", sdesc=" + sdesc + "]";
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/*
* 讀取表sort,將每行的數據封裝到Sort類的對象中
* 很多個Sort類對象,存儲到List集合中去
*/
public class JDBCTest2 {
public static void main(String[] args) throws Exception {
// 調用JDBCutils工具類方法getConection() 獲得數據庫連接對象
Connection con = JDBCutils.getConnection();
// 調用數據庫的連接對象con的方法prepareStatement() 對SQL語句進行預編譯
PreparedStatement pst = con.prepareStatement("SELECT * FROM sort1");
// 調用pst方法executeQuery()獲取結果集
ResultSet rs = pst.executeQuery();
// 創建集合對象
List<Sort> list = new ArrayList<Sort>();
while(rs.next()){
// 獲取每個列數據,封裝到Sort對象中
Sort s = new Sort(rs.getInt("sid"), rs.getString("sname"), rs.getDouble("sprice"), rs.getString("sdesc"));
list.add(s);
}
JDBCutils.close(con, pst,rs);
// 遍歷List集合
for(Sort l:list){
System.out.println(l);
}
}
}
【使用properties配置文件】重寫獲取數據庫連接工具類
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;
/*
* 編寫JDBC的工具類,獲取數據庫的連接
* 採用讀取配置文件Properties的方式
* 讀取配置文件,獲取 driverClass url username password 信息 只需執行一次 可以放到static{}中去
*
* "database.properties"文件中的內容:
* driverClass=com.mysql.jdbc.Driver
* url=jdbc:mysql://localhost:3306/mybase1
* username=root
* password=123
*/
public class JDBCutilsProperties {
private static Connection con;
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{
try{
// 使用類的加載器
InputStream in =JDBCutilsProperties.class.getClassLoader().getResourceAsStream("database.properties");
Properties pro = new Properties();
pro.load(in);
// 獲得集合中的鍵值對
driverClass = pro.getProperty("driverClass");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
Class.forName(driverClass);
con = DriverManager.getConnection(url,username,password);
}catch(Exception ex){
throw new RuntimeException(ex+"數據庫連接失敗");
}
}
// 定義靜態方法,返回數據庫的連接對象
public static Connection getConnection(){
return con;
}
// 定義關閉方法
public static void close(Connection con, Statement stat, ResultSet pst){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
pst.close();
} catch (SQLException ex) {}
}
}
// 關閉方法重載
public static void close(Connection con, Statement stat){
if(con !=null){
try {
con.close();
} catch (SQLException ex) {}
}
if(con !=null){
try {
stat.close();
} catch (SQLException ex) {}
}
}
}