創建數據庫,將本身的姓名、學號做爲一條記錄插入。(截圖,需出現本身的學號、姓名)
在本身創建的數據庫上執行常見SQL語句(截圖)
mysql
//201521123117 try { conn = DriverManager.getConnection(URL,userName,password); Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while(resultSet.next()){ int id = resultSet.getInt("id"); String stuno = resultSet.getString("stuno"); String name =resultSet.getString("name"); int age =resultSet.getInt("age"); Date date = resultSet.getDate("birthdate"); System.out.print("id="+id+" stuno="+stuno+" name="+name+" age="+age+" birthdate="+date); } } catch (SQLException e) { e.printStackTrace(); }finally{ if(conn!=null) try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } conn = null; }
(1)裝載驅動; (2)建立數據庫並鏈接(Connection); (3)經過鏈接想數據庫發送SQL語句(Statement); (4)得到結果集(ResultSet); (5)處理結果; (6)關閉鏈接,釋放資源。
-參考:實驗任務書-題目2sql
int row = 0; //根據參數更新數據 String strSql = "update students set name = ? where Id = ?"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "li"); pStatement.setInt(2, 2); row = pStatement.executeUpdate(); System.out.println("成功更新了"+row+"行數據!"); pStatement.close();//當即釋放資源
String strSql = "select * from students where name = ?"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "李心宇"); rs = pStatement.executeQuery(); System.out.println("id\t學號 \t\t姓名\t年齡\t出生年月日"); while(rs.next()){ //經過列名取數據 System.out.print(rs.getInt("id")+"\t"); System.out.print(rs.getString("stuno")+"\t"); System.out.print(rs.getString("name")+"\t"); System.out.print(rs.getInt("age")+"\t"); System.out.print(rs.getDate("birthdate")); System.out.println(); } pStatement.close();//當即釋放資源
普通方法insert():數據庫
//201521123117 for(int i=0;i<1000;i++){ String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "201521123117"); pStatement.setString(2, "li"); pStatement.setInt(3, 20); pStatement.setString(4, "1997-09-11"); }
executeBatch方法:安全
//201521123117 for(int i=0;i<1000;i++){ String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "201521123117"); pStatement.setString(2, "li"); pStatement.setInt(3, 20); pStatement.setString(4, "1997-09-11"); pStatement.addBatch();//添加到同一個批處理中 } pStatement.executeUpdate(); pStatement.close();//當即釋放資源
時間對比截圖:
ide
參考:實驗任務書-題目3學習
//201521123117 @Override public List<Student> findAll() { // TODO Auto-generated method stub Connection conn = null; Statement stat = null; ResultSet rs = null; Student stu=null; List<Student> students=new ArrayList<Student>(); String sql = "select * from student"; try { conn = JDBCUtil.getConnection(); stat = conn.createStatement(); rs = stat.executeQuery(sql); while(rs.next()){ stu=new Student(rs.getInt("id"),rs.getString("name")); students.add(stu); } }catch (SQLException sqle) { sqle.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtil.realeaseAll(rs,stat, conn); } return students; }
DAO模式的使用至關於創建一個接口,接口中有咱們所須要的方法。在程序中,當須要和數據進行交互的時候則使用這個接口,而且編寫一個實現類來實現這個接口上的方法,能夠很清晰的知道interface DAO接口的類有什麼功能,代碼之間的關係清晰。並且以後咱們須要對程序的修改的話,只需對DAO模式中的某個方法修改便可,不須要整個項目都進行修改,修改範圍變小,工做量減小。
參考:實驗任務書-題目5測試
(1)在數據讀取時,使用文件速度比較慢,而使用數據庫時讀取速度更快,效率更高些; (2)使用數據庫時須要設置密碼,這就限制了訪問數據庫的對象,相對於使用文件,安全性更高,內容泄露的可能性低; (3)使用文件時須要打開文件,存放數據再關閉文件,而使用數據庫只需輸入相應的命令便可實現。