Oracel的期末作業,寫一個簡單的web頁面連接oracle數據庫實現增刪改查
完整源碼鏈接:https://pan.baidu.com/s/1f2TfFt-5NFNspYM43J2muA
提取碼: mfdh
開發環境:
編譯器:Eclipse
數據庫:Oracle
數據庫管理器:Navicat
效果展示:
文件目錄:
功能:
添加:添加新的學生信息,包括學號、姓名、性別、電話
刪除:刪除已有學生信息
更新:更改已有學生信息,包括姓名、性別、電話
查找:通過關鍵字查找相關學生信息
數據庫設計:
學生表Student
列名 | 類型 | 約束 | 備註 |
---|---|---|---|
id | NUMBER(38,0) | 非空、主鍵 | 學號 |
name | NVARCHAR2(20) | 非空 | 姓名 |
sex | NVARCHAR2(2) | 非空 | 性別 |
phone | NVARCHAR2(25) | 非空 | 電話 |
代碼部分:
數據庫
-- ----------------------------
-- Table structure for STUDENT
-- ----------------------------
DROP TABLE "SYSTEM"."STUDENT";
CREATE TABLE "SYSTEM"."STUDENT" (
"ID" NUMBER(38) NOT NULL ,
"NAME" NVARCHAR2(20) NOT NULL ,
"SEX" NVARCHAR2(2) ,
"PHONE" NVARCHAR2(25) ,
"CLASSSID" NUMBER(38)
)
TABLESPACE "SYSTEM"
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
INITIAL 65536
NEXT 1048576
MINEXTENTS 1
MAXEXTENTS 2147483645
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;
-- ----------------------------
-- Records of STUDENT
-- ----------------------------
INSERT INTO "SYSTEM"."STUDENT" VALUES ('10001', '張三', '男', '10086', NULL);
INSERT INTO "SYSTEM"."STUDENT" VALUES ('10002', '李四', '女', '10010', NULL);
INSERT INTO "SYSTEM"."STUDENT" VALUES ('10003', '王五', '男', '10001', NULL);
INSERT INTO "SYSTEM"."STUDENT" VALUES ('10004', '趙四', '男', '10000', NULL);
-- ----------------------------
-- Checks structure for table STUDENT
-- ----------------------------
ALTER TABLE "SYSTEM"."STUDENT" ADD CONSTRAINT "SYS_C0010908" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
ALTER TABLE "SYSTEM"."STUDENT" ADD CONSTRAINT "SYS_C0010909" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
信息列表
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
request.setCharacterEncoding("utf-8");
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
/**
顯示student所有數據
1 從數據庫取出student表所有的數據
2 展示數據
*/
//獲取數據庫連接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = DriverManager.getConnection(url,"system","123");
//執行查詢
PreparedStatement pst = conn.prepareStatement("select * from student");
ResultSet rst = pst.executeQuery();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>index</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<table class="gridtable" style="width: 100%;">
<tr>
<th><a href="<%=basePath%>student/add.jsp">添加</a></th>
<th>
<form action="${basePath}student/findProcess.jsp" method="post">
<input type="text" name="findtext"/>
<input type="submit" value="查找" />
</form>
</th>
</tr>
<tr>
<th>學號</th>
<th>姓名</th>
<th>性別</th>
<th>電話</th>
<th>操作</th>
</tr>
<%
while(rst.next()) {
%>
<tr align="center">
<td><%=rst.getInt("id") %></td>
<td><%=rst.getString("name") %></td>
<td><%=rst.getString("sex") %></td>
<td><%=rst.getLong("phone") %></td>
<td>
<a href="<%=basePath%>student/update.jsp?id=<%=rst.getInt("id")%>">更新</a>
<a href="<%=basePath%>student/delete.jsp?id=<%=rst.getInt("id")%>">刪除</a>
</td>
</tr>
<%
}
rst.close();
pst.close();
conn.close();
%>
</table>
</body>
</html>
添加
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
/**
接受用戶輸入
將數據傳遞給 process頁面處理
*/
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<form action="${basePath}student/addProcess.jsp" method="post">
<table id="datagrid" class="gridtable" style="width: 100%;">
<tr>
<th>
學號
</th>
<td>
<input type="text" name="id" value="" />
</td>
</tr>
<tr>
<th>
姓名
</th>
<td>
<input type="text" name="name" value="" />
</td>
</tr>
<tr>
<th>
性別
</th>
<td>
<input type="text" name="sex" value="" />
</td>
</tr>
<tr>
<th>
電話
</th>
<td>
<input type="text" name="phone" value="" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="sub" value="提交" />
</td>
</tr>
<!-- Data End-->
</table>
</form>
<tr>
<th><a href="<%=basePath%>student/list.jsp">返回</a></th>
</tr>
</body>
</html>
處理添加信息
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
/**
1 接收傳遞新增數據需要的參數
2 存入數據庫
*/
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String sex = request.getParameter("sex");
long phone = Long.parseLong(request.getParameter("phone"));
//獲取數據庫連接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = DriverManager.getConnection(url,"system","123");
//執行查詢
PreparedStatement pst = conn.prepareStatement("insert into student(id,name,sex,phone) values(?,?,?,?)");
//處理參數
//pst.setInt(1,id);
//pst.setString(2,name);
//pst.setString(3,sex);
//pst.setInt(4,phone);
//setObject 用於做封裝處理
pst.setObject(1,id);
pst.setObject(2,name);
pst.setObject(3,sex);
pst.setObject(4,phone);
int row = pst.executeUpdate();
pst.close();
conn.close();
out.print("<h1>更新行數 :"+row+"</h1>");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<tr>
<th><a href="<%=basePath%>student/list.jsp">返回</a></th>
</tr>
</body>
</html>
刪除
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
/**
1 接收傳遞修改數據需要的參數
2 執行刪除
*/
int id = Integer.parseInt(request.getParameter("id"));
//獲取數據庫連接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = DriverManager.getConnection(url,"system","123");
//執行查詢
PreparedStatement pst = conn.prepareStatement("delete from student where id=?");
//處理參數
//setObject 用於做封裝處理
pst.setObject(1,id);
int row = pst.executeUpdate();
pst.close();
conn.close();
out.print("<h1>更新行數 :"+row+"</h1>");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<tr>
<th><a href="<%=basePath%>student/list.jsp">返回</a></th>
</tr>
</body>
</html>
處理查找信息
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//取得參數
request.setCharacterEncoding("UTF-8");
String find = request.getParameter("findtext");
//查詢數據庫
//獲取數據庫連接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = DriverManager.getConnection(url,"system","123");
Statement stmt = conn.createStatement(); //注意Statement與PreparedStatement的區別
String sql="select * from student where id like '%"+find+"%' or name like '%"+find+"%' or sex like '%"+find+"%' or phone like '%"+find+"%'";
ResultSet rs=stmt.executeQuery(sql);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>index</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<table class="gridtable" style="width: 100%;">
<tr>
<th><a href="<%=basePath%>student/add.jsp">添加</a></th>
<th>
<form action="${basePath}student/findProcess.jsp" method="post">
<input type="text" name="findtext"/>
<input type="submit" value="查找" />
</form>
</th>
</tr>
<tr>
<th>學號</th>
<th>姓名</th>
<th>性別</th>
<th>電話</th>
<th>操作</th>
</tr>
<%
while(rs.next()) {
%>
<tr align="center">
<td><%=rs.getInt("id") %></td>
<td><%=rs.getString("name") %></td>
<td><%=rs.getString("sex") %></td>
<td><%=rs.getLong("phone") %></td>
<td>
<a href="<%=basePath%>student/update.jsp?id=<%=rs.getInt("id")%>">更新</a>
<a href="<%=basePath%>student/delete.jsp?id=<%=rs.getInt("id")%>">刪除</a>
</td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close();
%>
</table>
</body>
</html>
更新
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
/**
0 接收 修改數據的id
1 將原來的數據 顯示(數據庫查詢)
2 接收修改數據
3 將修改後的數據提交給 process頁面
*/
//取得參數
int id = Integer.parseInt(request.getParameter("id"));
//查詢數據庫 (按id查詢)
//獲取數據庫連接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = DriverManager.getConnection(url,"system","123");
//執行查詢
PreparedStatement pst = conn.prepareStatement("select * from student where id=?");
//處理參數
pst.setObject(1,id);
ResultSet rst = pst.executeQuery();
//rst 默認指向MetaData
//next 之後 指向第一行數據
rst.next();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>index</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<form action="${basePath}student/updateProcess.jsp" method="post">
<table id="datagrid" class="gridtable" style="width: 100%;">
<input type="hidden" name="id" value="<%=rst.getInt("id")%>" />
<tr>
<th>
name
</th>
<td>
<input type="text" name="name" value="<%=rst.getString("name")%>" />
</td>
</tr>
<tr>
<th>
sex
</th>
<td>
<input type="text" name="sex" value="<%=rst.getString("sex")%>" />
</td>
</tr>
<tr>
<th>
phone
</th>
<td>
<input type="text" name="phone" value="<%=rst.getLong("phone")%>" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="sub" value="提交" />
</td>
</tr>
<!-- Data End-->
</table>
</form>
</body>
</html>
<%
rst.close();
pst.close();
conn.close();
%>
處理更新信息
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
/**
1 接收傳遞修改數據需要的參數
2 執行更新
*/
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String sex = request.getParameter("sex");
long phone = Long.parseLong(request.getParameter("phone"));
//獲取數據庫連接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = DriverManager.getConnection(url,"system","123");
//執行查詢
PreparedStatement pst = conn.prepareStatement("update student set name=?,sex=?,phone=? where id=?");
//處理參數
//setObject 用於做封裝處理
pst.setObject(4,id);
pst.setObject(1,name);
pst.setObject(2,sex);
pst.setObject(3,phone);
int row = pst.executeUpdate();
pst.close();
conn.close();
out.print("<h1>更新行數 :"+row+"</h1>");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>index</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="${basePath}css/grid.css" />
</head>
<body>
<tr>
<th><a href="<%=basePath%>student/list.jsp">返回</a></th>
</tr>
</body>
</html>