一、JDBC --用java代碼操作資料庫 --CRUD(增删改查)
1.導入MySql驅動包
2.選擇要連接配接的是哪一種資料庫
Class.forName("com.mysql.jdbc.Driver");對類進行加載
3.通過主機号、端口号、使用者名、密碼建立一個連接配接
String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&CharacterEncoding=utf8";
String user = "root";
String password = "1234";
//DriverManager.getConnection(url,user,password);
4.選擇要操作的資料庫
Connection conn = DriverManager.getConnection(url,user,password);
5.打開一個指令視窗寫SQL語句
PreparedStatment psta = conn.prepareStatment("select * from emp");
6.執行SQL語句,檢視結果。
ResultSet rs = psta.executeQuery();
List<Emp> emplist = new ArrayList<Emp>();
While(re.next()){
emplist.add(new Emp(rs.getInt("sno"),rs.getString("sname"),rs.getInt("Salary"),rs.getString
("job"));
}
如果是增删改,則傳回受影響的行數
如果是查詢,則傳回結果集
7.如果是查詢,需要将結果集映射到JavaBean中
*别忘了關閉(倒着關):
if(rs!=null){
rs.close();
}
if(psta!=null){
psta.close();
}
if(conn!=null){
conn.close();
}
二、jdbc封裝查詢要考慮的問題
1.傳回值類型不确定
2.sql語句不同(參數傳遞)
3.語句中可能帶有參數(參數傳遞)
*把方法作為參數傳進來
JDK1.8之前處理方式:new一個接口,裡面有一個抽象方法,當做匿名内部類
List<Student> studentlist = JdbcUtil.executeQuery("select * from student",
new RowMap<Teacher>(){
public TeacherRowMapping(ResultSet rs){
studentlist.add(new Student(rs.getInt(sno),rs.getString(sname),rs.getInt
(Score),rs.getString(Ssex));
}
},null)
4.處理ResultSet方式不同
三、方法封裝
添加:
1.接收表單傳進的參數
String sno = req.getParameter("sno");
2.将參數封裝到JavaBean
Student student = new Student();
student.setSno(sno);
3.調用服務進行添加
IstudentService service = new StudentServiceImpl();(如果這個還沒寫好,用null)
4.重定向到清單頁
resp.sendRedirect("add.jsp");
修改:
1.接收sno
String sno = req.getParameter("sno");
2.通過sno查詢想要修改的資料
IstudentService service = new StudentServiceImpl();
Student student = service.getStudent(sno);
3.将資料放進作用域
req.setAttribute("student",student);
4.轉發到修改頁面
req.getRequestDispatcher("student").forward(req,resp);