JDBC的小Demo

    在java中對數據庫實行操作,對不同的數據庫需要導入不同的數據庫驅動(提供SQL操作的jar包)。我在這裏使用的數據庫是SQL server 2008 。也在網上下載了相適配的jar包。

    下載了驅動並加入本地工程的依賴庫後,就可以使用其中的API了。

不過既然是操作數據庫,我就先建立好了一個數據庫並新建表student_info。真實名字碼掉。


現在eclipse中,對每一個student,都有相同的屬性,故建立一個實體類student.java

public class Student {
	private String Sno = null;
	private String name = null;
	private String sex = null;
	private String birth = null;
	private String ClassNo = null;
	private String Entrance_date = null;
	private String Home_Addre = null;
	private String sdept = null;//系別
	private String postcode = null;
	public String getSno() {
		return Sno;
	}
	public void setSno(String sno) {
		Sno = sno;
	}
	··············省略一批get和set方法·················
	public String getPostcode() {
		return postcode;
	}
	public void setPostcode(String postcode) {
		this.postcode = postcode;
	}
	
}

既然想要操作數據庫,那就要獲取到數據庫的連接。新建一個類DB_connectBean專門獲取連接,先通過反射把驅動導入,連接對象Connection通過DriverManager的getConnection方法產生。需要指定數據庫的URL,本例中是本地數據庫——

public class DB_ConnectBean {
	
	private static Connection cnt = null;
	
	/**
	 * 靜態塊:程序運行最早執行的代碼塊
	 */
	static{
		try {
			//加載JDBC驅動
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			//獲得數據庫的鏈接
			cnt = DriverManager.getConnection(
					"jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Student_info");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection(){
		return cnt;
	}
//	//測試用的
//	public static void main(String[] args) throws Exception {
//		connect();
//	}
	
}	

定義了靜態方法返回對數據庫的連接Connection對象,寫一個類來實現對數據庫的增刪改查方法。需要調用到這個Bean——

public class Student_info_Dao {
	public void addStudent(){
		//add學生的操作
	}
	public void delStudent(){
		//delete學生的操作
	}
	public void upgradeStudent(){
		//更新學生的操作
	}
	public List<Student> queryStudent() throws Exception{
		//返回所有學生信息的操作。
		Connection cnt = DB_ConnectBean.getConnection();
		Statement stmt = cnt.createStatement();
		ResultSet rs = stmt.executeQuery("select * from Student_info");
		
		List<Student> students = new ArrayList<>();
		Student s = null;
		while(rs.next()){
			s = new Student();
			s.setName(rs.getString("Sname"));
			s.setSex(rs.getString("Sex"));
			s.setSno(rs.getString("Sno"));
			s.setBirth(rs.getString("Birth").substring(0, 11));
			s.setClassNo(rs.getString("Classno"));
			s.setEntrance_date(rs.getString("Entrance_date"));
			s.setHome_Addre(rs.getString("Home_addr"));
			s.setSdept(rs.getString("sdept"));
			s.setPostcode(rs.getString("postcode"));
//			System.out.println("姓名:???"+rs.getString("Sname"));
			students.add(s);
		}
		return students;
	}
	public Student GetStudent(){
		//查詢特定學生的操作,可指定參數
		return null;
	}
}

可以看到在java中執行SQL語句是先通過connection對象創建一個statement對象,statement對象的execute方法可以填入想要執行的SQL語句,返回的結果保存在ResultSet對象中。

然後寫一個主類來運行顯示一下結果,看能否正確從數據庫中select到想要的結果並輸出在控制檯:

public class Action {
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Student_info_Dao dao = new Student_info_Dao();
		List<Student> students = dao.queryStudent();
		for (Student student : students) {
			System.out.println("學號:"+student.getSno()+"------姓名:"+student.getName()+"------性別:"+student.getSex()
					+"------生日:"+student.getBirth()+"------籍貫:"+student.getHome_Addre());
		}
	}
}

運行,在控制檯下獲取到了信息。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章