servlet对mysql数据库的数据增删改
1、增加數據就是在jsp中添加數據,通過servlet的java代碼對數據庫進行添加數據(之前的寫的DVD為例):
jsp添加:
<form action="servlet/Add" method="post" ><table><tr><td align="center" colspan="2"><h2>添加圖書信息</h2><br></td></tr><tr><td align="right">ID:</td><td><input type="text" name="id"></td></tr><tr><td align="right">DVD名稱:</td><td><input type="text" name="name"></td></tr><tr><td align="right">狀態:</td><td><input type="text" name="state"></td></tr><tr><td align="right">日期:</td><td><input type="text" name="date"></td></tr><tr><td align="right">次數:</td><td><input type="text" name="count"></td></tr></table><div class="w"><input type="submit" value="提交" > <input type="reset" value="清除" ><input type="button" value="退出" οnclick="window.location.href='/dvd/index.jsp'"></div>
是使用form表單,進行數據添加的提交,method="post"是在提交的數據再post的方法中(還有get方法,相比post的方法較好一下),reset是頁面輸入的數據清空,退出就是返回登錄頁面;
java代碼:
request. setCharacterEncoding("UTF-8"); //是為了避免中文亂碼String id=request.getParameter("id");String name=request.getParameter("name");/*String state=request.getParameter("state");String date=request.getParameter("date");String count=request.getParameter("count");*/Connection con = Connect.get();try {PreparedStatement ps=con.prepareStatement("insert into dvd1(id,name) value('"+id+"','"+name+"')");ps.executeUpdate();ps.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}response.sendRedirect("/dvd/servlet/Check");
request.getParameter()是獲取jsp中的name值對應的頁面輸入值,把后面的三個屬性注釋了,是因為在mysql中給他們設了默認值,這的添加只需要給mysql中添加名稱和編號就可以了。注意:response.sendRedirect()是重置,括號里放的是相對地址,是跳轉到servlet,而這里的servlet地址是查看Web.xml中對應的地址,在這個地址之前加當前的工程名稱。(這里有個數據類型轉換問題:mysql語句中不識別java的數據類型,mysql中只識別mysql語句有沒有帶引號(單引號獲取雙引號),也就是說,java的中不管是什么數據類型的數據傳到數據庫中,只要數據庫中字段是varchar類型才需要添加引號,其他的數據類型不要(有可能有的需要,可能是我不知道)添加引號。)
2、刪除數據:就是先用servlet從數據庫中獲取數據,然后用jsp在頁面上顯示之后,才能從已顯示的數據中,刪除不要的數據,然后在刷新數據庫中剩下的數據:
在上個博客中有顯示數據庫的數據到頁面的上的過程,在頁面中顯示的有刪除的按鈕:
<input type="button" value="刪除" οnclick="delete1()">
這里還需要用js代碼,對選擇的按鈕進行觸發事件,
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
function delete1(){if($('input[type=checkbox]:checked').length<1){alert("請選擇要刪除的信息");}else{var ids='';$('input[type=checkbox]:checked').each(function(index,element){ids+=$(element).val()+',';});window.location.href='servlet/Delete?ids='+ids;} }
</script>
當沒有按鈕被選擇的時候,而觸發了刪除事件,則會提示 "請選擇要刪除的信息" ?這里也可以進行多條數據的刪除,用字符串進行拼接在一個,傳送到刪除的servlet中,而ids就是字符串的拼接的結果,需要傳輸到刪除的servlet中;
servlet代碼:
request. setCharacterEncoding("UTF-8");String ids=request.getParameter("ids");String[] str=ids.split(",");Connection con = Connect.get();//連接數據庫try {Statement st = con.createStatement();for(String id:str){st.executeUpdate("delete from dvd1 where id="+id);}st.close();con.close();} catch (SQLException e) {e.printStackTrace();}response.sendRedirect("/dvd/servlet/Check");
刪除的servlet接收ids字符串,進行切割,放到str的字符串數組中,用增強for循環,把str的id都變量出來,分別放到mysql的刪除語句中,進行一一刪除,最后response.sendRedirect()重置,調用數據庫的數據的方法(Check方法上個博客中有),就是刷新數據了(注意:一開始就調用servlet的,就是使用默認的get方法,只有指定的post方法,才能使用post方法);
3、修改數據:先把數據庫中數據打印到頁面上(都在Check可以完成了),選擇一條數據點擊觸發修改事件,進入修改servlet中get方法,獲取選中的一條數據,放到修改的jsp進行修改,修改完之后,在修改jsp中提交給修改的servlet的post方法;
<input type="button" value="修改" οnclick="change()">
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">function change(){if($('input[type=checkbox]:checked').length!=1){alert("請選擇一條信息");}else{window.location.href='servlet/Change?id='+$('input[type=checkbox]:checked').val();}}
</script>
這里和刪除基本上沒有區別,只是選擇的數據條數,只有一條,
servlet的get方法代碼
request. setCharacterEncoding("UTF-8");String id=request.getParameter("id");Connection con = Connect.get();try {Statement st = con.createStatement();ResultSet rs = st.executeQuery("select * from dvd1 where id="+id);ResultSetMetaData rm = rs.getMetaData();List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();while (rs.next()) {Map<String, Object> m = new HashMap<String, Object>();for (int i = 1; i <= rm.getColumnCount(); i++) {m.put(rm.getColumnName(i), rs.getObject(i));}list.add(m);}rs.close();st.close();con.close();request.setAttribute("lists", list);request.getRequestDispatcher("/change.jsp").forward(request,response);//轉發} catch (SQLException e) {e.printStackTrace();}
這里request.setAttribute("lists", list)中list就是上面ArrayList中的數據,lists是把list的數據傳輸到jsp中的變量,而下面的轉發就是要轉發到的jsp中,這的id就是check.jsp中的選中的id,然后用id的值,重新從數據庫,獲取id完整的數據,在這完整的數據發送到修改的jsp中;
修改的jsp
<form action="servlet/Change" method="post" ><%request.setCharacterEncoding("utf-8");@SuppressWarnings("unchecked")List<Map<String, Object>> list = (List<Map<String, Object>>) request.getAttribute("lists");if (list == null || list.size() == 0) {out.print("數據庫中沒有數據");} else {%><table><tr><td align="center" colspan="2"><h2>修改信息</h2><br></td></tr><tr><td align="right">ID:</td><td><input type="text" name="id" value="<%=list.get(0).get("id") %>" readonly="readonly"></td></tr><tr><td align="right">DVD名稱:</td><td><input type="text" name="name" value="<%=list.get(0).get("name") %>"></td></tr><tr><td align="right">狀態:</td><td><input type="text" name="state" value="<%=list.get(0).get("state1") %>"></td></tr><tr><td align="right">日期:</td><td><input type="text" name="date" value="<%=list.get(0).get("date1") %>"></td></tr><tr><td align="right">次數:</td><td><input type="text" name="count" value="<%=list.get(0).get("count1") %>"></td></tr><%} %></table><div class="w"><input type="submit" value="提交" > <input type="reset" value="清除" ><input type="button" value="退出" οnclick="window.location.href='/dvd/index.jsp'"></div>
</form> equest.getAttribute("lists"),就是獲取,修改servlet中get方法的ArrayList的數據,list.get(0).get("id"),用get(0),因為lists中就一條數據,之前只選中了一條數據,get("")中有
數據的,就是數據庫中的字段名稱,把之前的數據修改之后,提交到修改的servlet的post方法中, request. setCharacterEncoding("UTF-8"); String id=request.getParameter("id");String name=request.getParameter("name");String date=request.getParameter("date");String state=request.getParameter("state");String count=request.getParameter("count");Connection con = Connect.get();try {PreparedStatement ps=con.prepareStatement("update dvd1 set name='"+name+"',state1="+state+",date1="+date+",
count1="+count+" where id="+id);ps.executeUpdate();ps.close();con.close();} catch (SQLException e) {e.printStackTrace();}response.sendRedirect("/dvd/servlet/Check");
這的數據修改和數據添加已經沒有什么區別了,要是之前看懂了,到這里已經可以看懂了。
?
有什么問題,可以留言,我們可以討論討論。
轉載于:https://www.cnblogs.com/zxd6937/p/5998136.html
總結
以上是生活随笔為你收集整理的servlet对mysql数据库的数据增删改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个电机多少钱啊?
- 下一篇: 废纸现在回收多少钱一斤?