1. 本周學習總結
2. 書面作業 Q1. MySQL數據庫基本操作
建立數據庫,將自己的姓名、學號作為一條記錄插入。(截圖,需出現自己的學號、姓名) 答:
在自己建立的數據庫上執行常見SQL語句(截圖) -參考:實驗任務書-題目1
Q2. 使用JDBC連接數據庫與Statement
2.1 使用Statement操作數據庫。(粘貼一段你認為比較有價值的代碼,出現學號) 答:采用maven管理項目,添加Mysql依賴。
</dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency></dependencies>
代碼:
//201521123108public DBHelper() { //連接數據庫try {Driver driver = new com.mysql.cj.jdbc.Driver();DriverManager.registerDriver(driver);String url = "jdbc:mysql://localhost:3306/student?serverTimezone=UTC&useSSL=false";String user = "root";String password = "123456";conn = DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();}
}public void searchByStm()
{ //遍歷輸出try {statement=conn.createStatement();ResultSet rs = statement.executeQuery(querySql);while(rs.next()){String uname = rs.getString(1);String uid = rs.getString(2);System.out.println(uid + "\t" + uname );}}catch(Exception e){e.printStackTrace();}}
2.2 你認為使用JDBC操作數據庫的套路是什么?有那幾點需要注意。 答:1.加載數據庫所需驅動 2.提供JDBC所連接的URL
3.創建連接
4.創建Statement實例
5.執行sql語句
6.關閉JDBC對象 -參考:實驗任務書-題目2
Q3. PreparedStatement與參數化查詢
3.1 使用PreparedStatement根據用戶指定的查詢條件進行查詢。(粘貼一段你認為比較有價值的代碼,出現學號) 答:
//201521123108
public void searchByPst()
{ArrayList<Long> arr=new ArrayList<Long>();try{pst=conn.prepareStatement(querySql);rs=pst.executeQuery();while(rs.next()){arr.add(rs.getLong("ID"));}System.out.println(arr);this.pst.close();}catch (Exception e){e.printStackTrace();}
}
3.2 批量更新-批量插入1000個學生,統計整個操作所消耗的時間。對比普通方法插入與使用executeBatch方法所消耗的時間。(使用JUint4測試,需要出現時間對比截圖) 答:
public void addByPst()
{String sql= "insert into lin (Name,ID) values(?,?)";try{pst=conn.prepareStatement(sql);long btime=System.currentTimeMillis();for(int i=0;i<1000;i++){pst.setString(1,"lin");pst.setString(2,"100");int n=pst.executeUpdate();}long atime=System.currentTimeMillis();System.out.println(atime-btime+"ms");pst.close();}catch (Exception e){e.printStackTrace();}
}
參考:實驗任務書-題目3Q4. JDBCUtil與DAO
4.1 粘貼一段你認為比較有價值的代碼,并說明為什么要摘取這段代碼。出現學號 答:
//201521123108
class StudentDao
{public Connection conn = null;public Statement statement = null;public PreparedStatement pst=null;public ResultSet rs=null;private static String querySql ="select * from lin";public StudentDao() {try {Driver driver = new com.mysql.cj.jdbc.Driver();DriverManager.registerDriver(driver);String url = "jdbc:mysql://localhost:3306/student?serverTimezone=UTC&useSSL=false";String user = "root";String password = "123456";conn = DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();}}public boolean add(Student stu){boolean flag=true;String sql= "insert into lin (Name,ID) values(?,?)";try{pst=conn.prepareStatement(sql);pst.setString(1,stu.name);pst.setInt(2,stu.id);int i=pst.executeUpdate();if(i==0){flag=false;}}catch (Exception e){e.printStackTrace();}finally {try {pst.close();}catch(SQLException e) {}}return flag;}public boolean delete(Student stu){boolean flag=true;String sql="delete from user where id=?";try{pst=conn.prepareStatement(sql);pst.setInt(1,stu.id);int i=pst.executeUpdate();if(i==0){flag=false;}}catch(Exception e){e.printStackTrace();}finally {try {pst.close();}catch(SQLException e) {}}return flag;}public boolean update(Student stu){boolean flag=true;String sql="update lin set Name=? where ID=?";try{pst=conn.prepareStatement(sql);pst.setString(1,stu.name);pst.setInt(2,stu.id);int i=pst.executeUpdate();if(i==0){flag=false;}}catch (Exception e){e.printStackTrace();}finally {try {pst.close();}catch(SQLException e) {}}return flag;}public List<Student> findAll(){List<Student> students=new ArrayList<Student>();try{pst=conn.prepareStatement(querySql);rs=pst.executeQuery();while(rs.next()){students.add(new Student(rs.getString("Name"),rs.getInt("ID")));}}catch (Exception e){e.printStackTrace();}finally {try {rs.close();pst.close();}catch(SQLException e) {}}return students;}public Student findById(int id){Student stu=new Student();String sql="SELECT * FROM lin where id=?";try{pst=conn.prepareStatement(sql);pst.setInt(1,id);rs=pst.executeQuery();stu.name=rs.getString("Name");stu.id=rs.getInt("ID");}catch(Exception e){e.printStackTrace();}finally{try {rs.close();pst.close();}catch(SQLException e) {}}return stu;}public List<Student> findByName(String name){String sql="SELECT * FROM lin where Name like \"?%\"";List<Student> students=new ArrayList<Student>();try{pst=conn.prepareStatement(sql);pst.setString(1,name);rs=pst.executeQuery();while(rs.next()){students.add(new Student(rs.getString("Name"),rs.getInt("ID")));}}catch (Exception e){e.printStackTrace();}finally {try{rs.close();pst.close();}catch (SQLException e){}}return students;}
}
4.2 使用DAO模式訪問數據庫有什么好處? 答:DAO的好處就是提供給用戶的接口只有DAO的接口,所以如果用戶想添加數據,只需要調用create函數即可,不需要數據庫的操作。DAO使程序層次分明,邏輯清晰。如需要對程序進行修改,只需要對Dao中的某個方法進行修改,無需對整個程序進行修改,方便代碼的維護。
參考:實驗任務書-題目5Q5. 使用數據庫改造購物車系統
5.1 使用數據庫改造以前的購物車系統(應有圖形界面)。如果以前為完成購物車系統,可編寫基于數據庫的學生管理系統。包括對學生的增刪改查,要求使用。 答:
public List<Commodity> findByName(String name)
{String sql="SELECT * FROM Commodity where Name like \"?%\"";List<Commodity> students=new ArrayList<Commodity>();try{pst=conn.prepareStatement(sql);pst.setString(1,name);rs=pst.executeQuery();while(rs.next()){students.add(new Commodity(rs.getInt("ID")rs.getString("Name"),rs.getDouble("Price")));}}catch (Exception e){e.printStackTrace();}finally {try{rs.close();pst.close();}catch (SQLException e){}}return students;
}
5.2 相比較使用文件,使用數據庫存儲與管理數據有何不一樣? 答:數據庫方便管理,并且讀取速度快效率高,容量極大。最關鍵最關鍵的還是快這個優勢,如果是簡單的數據存儲,那用excel就可以,但作為一些軟件的后臺數據管理,就必須利用數據庫進行操作。
轉載于:https://www.cnblogs.com/yytx/p/6916345.html
總結
以上是生活随笔 為你收集整理的201521123108《Java程序设计》第14周学习总结 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。