用jsp敲全部的增刪改查連線資料庫
思路
新建一個list資料夾
- js/jquery-2.1.4.min.js // js 檔案
- WEB-INF/lib //用來放jar包
既然要連線資料庫
mysql-connector-java-5.1.13-bin.jar 是用來連線資料庫的
- 增加2個頁面
一個是寫頁面的
一個是用來寫java程式碼實現新增的
刪除 1個 批刪1 個 修改 2個
遇到的問題
<!-- 解決亂碼 --> <%@ page contentType="text/html;charset=utf-8" %> <!-- 導包 --> <%@ page import="java.sql.*"%> request.getParameter() 返回的 String 型別 分頁 limit 初始頁,每頁大小 //分頁 傳2個東西 int pageNumber;//第幾頁 int pageSize;//頁數尺寸 if(request.getParameter("pageNumber")==null||request.getParameter("pageNumber").equals("")){ pageNumber =1; }else{ pageNumber = Integer.valueOf(request.getParameter("pageNumber")); } if(request.getParameter("pageSize")==null||request.getParameter("pageSize").equals("")){ pageSize = 3; }else{ pageSize = Integer.valueOf(request.getParameter("pageSize")); } //計算 分頁的初始下標 int current = (pageNumber-1)*pageSize; // 為了防止在你上一頁的是時候往回走 0 -1 //判斷 如果 第幾頁的數小於1 的話 if(pageNumber<1){ pageNumber =1; } //在這裡寫java程式碼 寫計數 String sql = "select count(id) c from list"; Statement sc = con.createStatement(); ResultSet sr = sc.executeQuery(sql); if(sr.next()){ //這個是 寫 尾頁 尾頁的計算 = (計數-1)/頁數大小+1 int countPage=(sr.getInt("c")-1)/pageSize+1; //這個是用來寫上一頁的 int prePage = pageNumber -1; int nextPage = pageNumber+1; //上一頁判斷 if(prePage<1){ prePage =1; } //下一頁判斷 if(nextPage > countPage){ nextPage = countPage; }
<%%> 這個用來寫 java程式碼
程式碼
列表頁面
<!DOCTYPE html> <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.sql.*"%> <html lang="en"> <% Connection con=null; Statement cs=null; ResultSet rs=null; try{ //分頁 傳2個東西 int pageNumber;//第幾頁 int pageSize;//頁數尺寸 //request.getParameter() 返回的 String 型別 if(request.getParameter("pageNumber")==null||request.getParameter("pageNumber").equals("")){ pageNumber =1; }else{ pageNumber = Integer.valueOf(request.getParameter("pageNumber")); } if(request.getParameter("pageSize")==null||request.getParameter("pageSize").equals("")){ pageSize = 3; }else{ pageSize = Integer.valueOf(request.getParameter("pageSize")); } //判斷 如果 第幾頁的數小於1 的話 if(pageNumber<1){ pageNumber =1; } //計算 分頁的初始下標 int current = (pageNumber-1)*pageSize; //分頁 出示下標,每頁大小 String select_sql = "select * from list limit "+current+","+pageSize; Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dian","root","root"); cs = con.createStatement(); rs = cs.executeQuery(select_sql); %> <head> <meta charset="UTF-8"> <title>列表頁面</title> </head> <!-- 導一下js --> <script type="text/javascript" src="./js/jquery-2.1.4.min.js"></script> <script type="text/javascript"> function selectAll(obj){ if(obj.checked){ $(".ck").each(function(){ $(this).prop("checked",true); }) }else{ $(".ck").each(function(){ $(this).prop("checked",false); }) } } function fx(){ $(".ck").each(function(){ $(this).prop("checked",!$(this).prop("checked")); }); } function ps(){ var res=""; $(".ck:checked").each(function(){ /*if($(this).attr("checked",true)){ var va = $(this).val(); res += ","+va; res += ","+$(this).val(); }) res=res.substring(1); if(confirm("確認要刪除嗎?")){ location="delAll.jsp?id="+res; } } </script> <body> <button onclick="ps()">批刪</button> <table border="1" align="center"> <tr> <td> <input type="checkbox" onclick="selectAll(this)"> <button onclick="fx()">反選</button> </td> <td>姓名</td> <td>出生日期</td> <td>性別</td> <td>操作<a href="toAdd.jsp">增加</a></td> </tr> <% while(rs.next()){ %> <tr> <td><input type="checkbox" class="ck" value="<%=rs.getInt("id")%>"></td> <td><%=rs.getString("name")%></td> <td><%=rs.getDate("birth_date")%></td> <td><%=rs.getString("sex")%></td> <td> <a href="del.jsp?id=<%=rs.getInt("id")%>">刪除</a>|| <a href="toUpdate.jsp?id=<%=rs.getInt("id")%>">修改</a> </td> </tr> <% } %> <% //在這裡寫java程式碼 寫計數 String sql = "select count(id) c from list"; Statement sc = con.createStatement(); ResultSet sr = sc.executeQuery(sql); if(sr.next()){ //這個是 寫 尾頁 尾頁的計算 = (計數-1)/頁數大小+1 int countPage=(sr.getInt("c")-1)/pageSize+1; //這個是用來寫上一頁的 int prePage = pageNumber -1; int nextPage = pageNumber+1; if(prePage<1){ prePage =1; } if(nextPage > countPage){ nextPage = countPage; } %> <tr> <td colspan="10"> 第<%=pageNumber%>/<%=countPage%>頁 共<%=sr.getInt("c")%>條資料 <a href="list.jsp?pageNumber=1&pageSize=<%=pageSize%>">首頁</a> <a href="list.jsp?pageNumber=<%=prePage%>&pageSize=<%=pageSize%>">上一頁</a> <a href="list.jsp?pageNumber=<%=nextPage%>&pageSize=<%=pageSize%>">下一頁</a> <a href="list.jsp?pageNumber=<%=countPage%>&pageSize=<%=pageSize%>">末頁</a> </td> </tr> <% } %> </table> <% // 這個是用來連線前面try catch 的 }catch(Exception e){ e.printStackTrace(); }finally{ if(rs!= null){ try{ rs.close(); }catch(Exception e){ e.printStackTrace(); } } if(cs!=null){ try{ cs.close(); }catch(Exception e){ e.printStackTrace(); } } if(con!= null){ try{ con.close(); }catch(Exception e){ e.printStackTrace(); } } } %> <!-- <%%> 這個裡面寫的是java程式碼--> </body> </html>
/連線資料庫的那四步
//1. 載入驅動
//2.通過驅動管理器Driver manager 建立資料庫連線 connection
//3.通過資料庫建立預編譯物件
//4.執行查詢
String id = request.getParameter(“id”);
String sql = “delete from list where id in(”+id+")";
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dian”,“root”,“root”);
Statement cs = con.createStatement();
cs.executeUpdate(sql);
response.sendRedirect(“list.jsp”);
或者
String id = request.getParameter(“id”);
String sql = “select *from list where id =”+id;
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dian”,“root”,“root”);
//這裡用的是 PreparedStatement 和 statement 做一下區別 前後2個單詞不一樣多一個d
PreparedStatement pre = con.prepareStatement(sql);
ResultSet rs = pre.executeQuery();