這兩天主要完成了一個關於javaweb連接數據庫的增刪改查(剛剛開始學,還望大神們指點)
主要用到了jsp(制作界面),和一些SQL語句,以及數據庫的相關地方直接上代碼:
①主界面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 10 <body> 11 <h5>通訊錄系統</h5> 12 <br/> 13 <a href="add.jsp">添加信息</a>//引號中的是要跳轉的頁面以及要執行的操作 14 <br/> 15 <a href="delete.jsp">刪除信息</a> 16 <br/> 17 <a href="change.jsp">修改信息</a> 18 <br/> 19 <a href="search.jsp">查看信息</a> 20 <br/> 21 <a href="look1.jsp">顯示全部信息</a> 22 23 </body> 24 </html>
主界面通過鏈接的方式與其他頁面鏈接。
主界面完成后就是增刪改查的各種功能和數據庫的鏈接
②增
增加用戶的界面
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="utf-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <h3>請輸入要增加的信息</h3> 11 <form name="form1" method="post" action="add1.jsp"> 12 姓名:<input name="name" type="text"/> <br> 13 年齡:<input name="age" type="text"/> <br> 14 電話:<input name="phone" type="text"/> <br> 15 <input type="submit" value="提交" /> 16 <input type="reset" value="重置" /> 17 <input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一頁"> 18 </form> 19 </body> 20 </html>
增加用戶的操作包括連接數據庫
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); //MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL //String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; //String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"; String biaoming ="list"; // MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost:3306/hero?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";//數據庫名記得改啊在這 // 數據庫的用戶名與密碼,需要根據自己的設置 final String USER = "root"; final String PASS = "jiang123456"; // 注冊 JDBC 驅動 Class.forName(JDBC_DRIVER); int count=0;//獲取結果集的長度 Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); Statement stmt = conn.createStatement();//到這里連接數據庫的操作就結束了死東西知道就行套模板.后面有很多重復的地方可以考慮將上面這部分改為一個函數令創一個class. ResultSet set=null;//結果集 try { set=stmt.executeQuery("select * from list");//用結果集set來存儲表里的內容 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } String x1 = request.getParameter("name");//獲取上一個界面輸入的姓名 String x2 = request.getParameter("age"); String x3 = request.getParameter("phone"); String name1[]=new String[100]; //建立一個字符串數組用來存表中已經存在的name int index=-1; int i=0; while(set.next())//這一部分則是看輸入結果是否已經存在 { name1[i]=set.getString("name"); i++; count++; } for(int j=0;j<count;j++) { if(x1.equals(name1[j])) { out.print("輸入數據重復請重新輸入"); index=-1;break; } else { index=1; } } if(index==1) { xieru(stmt,set,x1,x2,x3); } stmt.close();//全部操作結束后要關閉驅動死東西可套用 conn.close(); %> <%!//方法要寫這里上面會報錯emm public static void xieru(Statement stmt,ResultSet set,String x1,String x2,String x3) { //System.out.println("INSERT INTO kechengbiao (ke,jiao,di)VALUES('"+x1+"',"+"'"+x2+"',"+"'"+x3+"'"+");"); try { set=stmt.executeQuery("select *from list"); stmt.executeUpdate("INSERT INTO list (name,age,phone)values (\""+x1+"\","+"\""+x2+"\","+"\""+x3+"\""+");"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } %> <input type="button" name="Submit" onclick="javascript:history.back(-1);" value="返回上一頁"> </body> </html>
上面這倆步驟就是增加時的代碼。后面的基本都是按這個套路來的,
③改
修改數據的界面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <h3>請輸入要更改的人員信息</h3> <form name="form3" method="post" action="change1.jsp"> 姓名:<input name="name" type="text"/> <br> 修改年齡:<input name="age" type="text"/> <br> 修改電話:<input name="phone" type="text"/> <br> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </form> </body> </html>
修改數據的的操作,我這塊是根據輸入的名字,來修改年齡以及電話號碼的。要有其他自己記得看看啊
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); //MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL //String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; //String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"; String biaoming ="list"; // MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost:3306/hero?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 數據庫的用戶名與密碼,需要根據自己的設置 final String USER = "root"; final String PASS = "jiang123456"; // 注冊 JDBC 驅動 Class.forName(JDBC_DRIVER); Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); Statement stmt = conn.createStatement(); String x1 = request.getParameter("name"); String x2 = request.getParameter("age"); String x3 = request.getParameter("phone"); change(stmt,x1,x2,x3); stmt.close(); conn.close(); %> <%! public static void change(Statement stmt,String x1,String x2,String x3) { //System.out.println("INSERT INTO kechengbiao (ke,jiao,di)VALUES('"+x1+"',"+"'"+x2+"',"+"'"+x3+"'"+");"); try { stmt.executeUpdate("update list set age=\'"+x2+"\',phone=\'"+x3+"\' where name=\'"+x1+"\'");
//這一塊還是建議多了解一下1SQL語句的使用寫的時候花了好長時間,轉義字符一定要好好看好好學。 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } %> </body> </html>
④刪除的主界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3>請輸入要刪除的人員信息</h3> <form name="form2" method="post" action="delete1.jsp"> 姓名:<input name="name" type="text"/> <br> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </body> </html>
刪除的代碼操作
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <%! public static void delete(Statement stmt,String x1) { //System.out.println("INSERT INTO kechengbiao (ke,jiao,di)VALUES('"+x1+"',"+"'"+x2+"',"+"'"+x3+"'"+");"); try{stmt.executeUpdate("delete from list where name="+"\'"+x1+"\'"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } %> <% response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); //MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL //String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; //String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"; String biaoming ="list"; // MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost:3306/hero?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 數據庫的用戶名與密碼,需要根據自己的設置 final String USER = "root"; final String PASS = "jiang123456"; // 注冊 JDBC 驅動 Class.forName(JDBC_DRIVER); Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); Statement stmt = conn.createStatement(); String x1 = request.getParameter("name"); delete(stmt,x1); stmt.close(); conn.close(); %> </body> </html>
⑤顯示全部數據主界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>是否查看全部人員信息</h3>
<form name="form3" method="post" action="look1.jsp">
<input name="name" type="text"/> <br>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</body>
</html>
顯示全部數據主代碼
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); ResultSet set=null; //MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL //String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; //String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"; String biaoming ="list"; // MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost:3306/hero?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 數據庫的用戶名與密碼,需要根據自己的設置 final String USER = "root"; final String PASS = "jiang123456"; // 注冊 JDBC 驅動 Class.forName(JDBC_DRIVER); Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); Statement stmt = conn.createStatement(); String x1 = request.getParameter("name"); try{ set=stmt.executeQuery("select *from list"); //這塊就是利用SQL語句返回一個結果集然后再遍歷所有數據 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } while(set.next()) { out.print("姓名:"+set.getString("name")+" 年齡:"+set.getString("age")+"電話號碼:"+set.getString("phone")+"<br>"); } stmt.close(); conn.close(); %> </body> </html>
⑥查詢人員信息主界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3>請輸入要查詢的人員信息</h3> <form name="form5" method="post" action="search1.jsp"> 姓名:<input name="name" type="text"/> <br> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </body> </html>
主要代碼
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); ResultSet set=null; //MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL //String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; //String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"; String biaoming ="list"; // MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost:3306/hero?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 數據庫的用戶名與密碼,需要根據自己的設置 final String USER = "root"; final String PASS = "jiang123456"; // 注冊 JDBC 驅動 Class.forName(JDBC_DRIVER); Connection conn = DriverManager.getConnection(DB_URL,USER,PASS); Statement stmt = conn.createStatement(); String x1 = request.getParameter("name"); try{ set=stmt.executeQuery("select *from list"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } int y=1; while(set.next()) { String y1=set.getString("name"); if(y1.equals(x1)) { out.print("姓名:"+set.getString("name")+" 年齡:"+set.getString("age")+"電話號碼:"+set.getString("phone")+"<br>"); y=-1; break; } else { continue; } } if(y==1) { out.print("查找人員不存在"); } stmt.close(); conn.close(); %> </body> </html>
以上就是所有代碼了,建議下載SQLyog實例化,方便直接查看數據庫的變化。東西看的很多其實大部分都是相似的,以后繼續完善。上面全是建立的jsp文件別建錯了。