1. 程式人生 > >JDBC訪問資料庫之MySql

JDBC訪問資料庫之MySql

what: jdbc是一組API

when:  應用程式和資料庫通過JDBC實現資料互動

how:(嚴格來說分為以下五步:

    Class.forName()載入驅動——

    DriverManager獲取Connection連線——

   建立Statement(適用於簡單的SQL語句,消耗小)/PreparedStatement(擴充套件了statement,開銷大),資料庫執行SQL語句——

    返回ResultSet查詢結果——

    釋放資源

第一步,放在一個公共包裡面(表已經建立好的基礎上,並未放在配置檔案中),然後連線:

 

public class DBUtils {

    public static Connection getConn() {
        Connection conn = null;
        // MySQL的JDBC URL編寫方式:jdbc:mysql://主機名稱:連線埠/資料庫的名稱?引數=值
        // 避免中文亂碼要指定useUnicode和characterEncoding
        // 執行資料庫操作之前要在資料庫管理系統上建立一個數據庫,名字自己定,
        String url = "jdbc:mysql://localhost:3306/StudySystem?"
                + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";
        try {
            Class.forName("com.mysql.jdbc.Driver");// 動態載入mysql驅動
            // 一個Connection代表一個數據庫連線
            conn = DriverManager.getConnection(url);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

}

 

第二步:在需要的物件下執行相應的操作,此操作為獲取

public List<Student> getStudent()
	{
            //controller--service--dao通過三層呼叫寫在此資料庫操作類
                //建立資料庫連線物件
		Connection conn = DBUtils.getConn();
		ResultSet rs=null;
                //集合類來儲存student這種型別
		List<Student> stus=new ArrayList<Student>();
		String sql = "select * from STUDENT ";
		try {
                       
			PreparedStatement pStatement = conn.prepareStatement(sql);//預處理			
			rs = pStatement.executeQuery();	//執行	
			while(rs.next())//將查詢的結果放在集合類中,只要有下一條資料就不斷的執行
			{
				Student s=new Student();//建立學生物件
				s.setId(rs.getInt(1));
				s.setStudentNo(rs.getString(2));
				s.setPassword(rs.getString(3));
				s.setStudentName(rs.getString(4));
				s.setSex(rs.getString(5));
				s.setSubject(rs.getString(6));
				s.setStuClass(rs.getString(7));
				stus.add(s);//每建立一個就放在物件中
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			DBUtils.closeConn(conn);//資料庫關閉
		}
		return stus ;
	}

 

第三步:關閉資料庫連結,釋放資源(注意關閉和開啟的順序相反)

 public static void closeConn(Connection conn) {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != conn) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }