1. 程式人生 > >用jsp敲全部的增刪改查連線資料庫

用jsp敲全部的增刪改查連線資料庫

思路

新建一個list資料夾

  1. js/jquery-2.1.4.min.js // js 檔案
  2. WEB-INF/lib //用來放jar包

既然要連線資料庫
mysql-connector-java-5.1.13-bin.jar 是用來連線資料庫的

  1. 增加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();