1. 程式人生 > 其它 >P6478 [NOI Online # 2 提高組] 遊戲 詞典式題解,分別每一個內容

P6478 [NOI Online # 2 提高組] 遊戲 詞典式題解,分別每一個內容

  這兩天主要完成了一個關於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檔案別建錯了。