編寫一個簡單的 JDBC 程序


連接數據庫的步驟:

1、注冊驅動(只做一次)

2、建立連接(Connection)

3、創建執行SQL的語句(Statement)

4、執行語句

5、處理執行結果(ResultSet)

6、釋放資源

 

在寫代碼之前,我們需要導入數據庫驅動,即 mysql-connector-java-5.0.8-bin.jar

導入 jar 包步驟:在項目名(JDBCDemo)上鼠標右鍵,然后左鍵點擊 Properties,在彈出的 Properties for JDBCDemo 的窗口中按如下圖中指引操作即可。

 

代碼實現如下:

  1 package com.fhcq.jdbc;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 
  9 public class JDBCTest {
 10 
 11     public static void main(String[] args) throws Exception{
 12     	// TODO Auto-generated method stub
 13          test();
 14     }
 15 
 16     static void test() throws SQLException, ClassNotFoundException {
 17 
 18         // 1.注冊驅動
 19         //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
 20         //System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
 21         Class.forName("com.mysql.jdbc.Driver");//推薦方式
 22 
 23         // 2.建立連接
 24         String url = "jdbc:mysql://localhost:3306/jdbc";
 25         String user = "root";
 26         String password = "123456";
 27         Connection conn = DriverManager.getConnection(url, user, password);
 28 
 29         // 3.創建語句
 30         Statement st = conn.createStatement();
 31 
 32         // 4.執行語句
 33         ResultSet rs = st.executeQuery("select * from user");
 34 
 35         // 5.處理結果(依次打印出 user 表中的4列基本數據項的值)
 36         while (rs.next()) {
 37             System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t"
 38                     + rs.getObject(3)+"\t" + rs.getObject(4));
 39         }
 40 
 41         // 6.釋放資源
 42         rs.close();
 43         st.close();
 44         conn.close();
 45     }
 46 
 47 }

 

上述代碼的實現其實是一個很不規范的例子,下面就來對其進行簡單的優化:

我們首先寫一個 JDBCUtils 工具類。首先來保證這個驅動只注冊一次,然后再把【建立連接】 和 【釋放資源】 的部分也都添加進來,這樣在我們每次獲取連接的時候都通過這個工具類來拿,還有就是不會每寫一次都要把【釋放資源】那么一大段代碼都給帶上了。

  1 package com.fhcq.jdbc;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 
  9 public final class JDBCUtils {
 10 
 11 	private static String url = "jdbc:mysql://localhost:3306/jdbc";
 12 	private static String user = "root";
 13 	private static String password = "123456";
 14 
 15 	private JDBCUtils(){
 16 
 17 	}
 18 
 19 	static{
 20 
 21 		// 1.注冊驅動
 22 		try {
 23 			Class.forName("com.mysql.jdbc.Driver");
 24 		} catch (ClassNotFoundException e) {
 25 			throw new ExceptionInInitializerError(e);
 26 		}
 27 	}
 28 
 29 	public static Connection getConnection() throws SQLException{
 30 		return DriverManager.getConnection(url, user, password);
 31 	}
 32 
 33 	public static void free(ResultSet rs,Statement st,Connection conn){
 34 
 35 		try{
 36 			if(rs!=null){
 37 				rs.close();
 38 			}
 39 		}catch(SQLException e){
 40 			e.printStackTrace();
 41 		}finally{
 42 			try{
 43 				if(st != null){
 44 					st.close();
 45 				}
 46 			}catch(SQLException e){
 47 				e.printStackTrace();
 48 			}finally{
 49 				if(conn!=null){
 50 					try {
 51 						conn.close();
 52 					} catch (SQLException e) {
 53 						e.printStackTrace();
 54 					}
 55 				}
 56 			}
 57 		}
 58 	}
 59 }

 

剩下的我們就來簡化一下原有的代碼,這樣處理后的代碼就可以作為我們的一個模板來使用了。

  1 package com.fhcq.jdbc;
  2 
  3 import java.sql.Connection;
  4 import java.sql.ResultSet;
  5 import java.sql.Statement;
  6 
  7 public class JDBCTest {
  8 
  9 	public static void main(String[] args) throws Exception {
 10 		// TODO Auto-generated method stub
 11 		template();
 12 	}
 13 
 14 	static void template() throws Exception{
 15 
 16 		Connection conn = null;
 17 		Statement st = null;
 18 		ResultSet rs = null;
 19 
 20 		try {
 21 
 22 			// 2.建立連接
 23 			conn = JDBCUtils.getConnection();
 24 
 25 			// 3.創建語句
 26 			st = conn.createStatement();
 27 
 28 			// 4.執行語句
 29 			rs = st.executeQuery("select * from user");
 30 
 31 			// 5.處理結果
 32 			while(rs.next()){
 33 				System.out.println(rs.getObject(1) + "\t" + rs.getObject(2)
 34 				     + "\t"+ rs.getObject(3)+"\t" + rs.getObject(4));
 35 			}
 36 
 37 		}finally{
 38 			JDBCUtils.free(rs, st, conn);
 39 		}
 40 
 41 	}
 42 
 43 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM