实例: Java代码操作oracle数据库(JDBC+sevrlet+jsp+html)
1, 注册页面
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
</head>
<body>
<form id="uform" action="saveuser" method="post">
用户代码:<input id="userid" type="text" name="userid" width=30 />
<br><br>
用户名称:<input id="username" type="text" name="username" width=30 />
<br><br>
登录密码:<input id="password" type="password" name="password" width=30 />
<br><br>
确认密码:<input id="queren" type="password" name="queren" width=30 />
<br><br>
<input type="submit" value="注册" /><br><a href="findoracle">显示所有用户</a>
</form>
</body>
</html>
2, 保存用户数据
package com.hanqi; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class saveuser extends HttpServlet {
private static final long serialVersionUID = 1L; public saveuser() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //设置字符集
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
String strUserid = request.getParameter("userid"); //获取传递过来的参数
String strUsername = request.getParameter("username");
String strPW = request.getParameter("password");
if(strUserid == null||strUserid.trim().length()==0) { //判断获取的参数是否为空
response.getWriter().append("用户ID不能为空");
}
else if(strUsername == null||strUsername.trim().length()==0) {
response.getWriter().append("用户名称不能为空");
}
else {
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); //注册Oracle
String url = "jdbc:oracle:thin:@localhost:1521:orcl"; //设置连接oracle数据库
Connection conn = DriverManager.getConnection(url, "test1204", "1234"); //登录oracle, 连接oracle用户
if(conn!=null) {
//操作数据库
String sql = "insert into T_Test (user_id, user_name, password)"+"values(?,?,?)"; //设置oracle语句的命令
//执行语句的类
PreparedStatement ps = conn.prepareStatement(sql); //创建类ps, 并下达执行命令
//strUsername = new String(strUsername.getBytes("iso-8859-1"),"utf-8");
//转码的问题, 当这个页面接收过来的参数是以post方法传来的, 完全可以只用一个setCharacterEncoding("UTF-8");就能进行转码
ps.setString(1, strUserid); //设置写入oracle表中的值
ps.setString(2, strUsername);
ps.setString(3, strPW);
int row = ps.executeUpdate(); //执行语句的命令并返回数据行数
if(row>0) {
response.getWriter().append("保存数据成功, 保存"+row+"条数据成功!");
}
else {
response.getWriter().append("保存数据失败");
}
ps.close();
conn.close();
}
else
{
response.getWriter().append("连接数据库失败");
}
} catch (Exception e) {
e.printStackTrace();
response.getWriter().append(e.getMessage());
}
}
response.getWriter().append("<br><a href='zhuce.html'>返回注册</a>");
response.getWriter().append("<br><a href='findoracle'>显示所有用户</a>");
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3, 工具类
package com.hanqi;
//关于用户的实体类
public class User {
//用户代码
private String UserID;
public String getUserID()
{
return UserID;
}
public void setUserID(String UID)
{
this.UserID = UID;
} //用户名称
private String UserName;
public String getUserName()
{
return UserName;
}
public void setUserName(String userName)
{
UserName = userName;
} //密码
private String PassWord;
public String getPassWord()
{
return PassWord;
}
public void setPassWord(String passWord)
{
PassWord = passWord;
}
} //定义连接数据库的方体
package com.hanqi; import java.sql.*; public class DBHelper {
public static Connection getconnection() throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
Connection conn = DriverManager.getConnection(url, "test1204", "1234");
return conn;
} }
4, 修改数据
package oraclejdbc; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.hanqi.DBHelper; public class Edit extends HttpServlet {
private static final long serialVersionUID = 1L; public Edit() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //设置字符集
response.setContentType("text/html; charset=UTF-8");
String strUserid = request.getParameter("userid"); //获取传递过来的参数
String strUsername = request.getParameter("username");
String strPW = request.getParameter("password");
if(strUserid == null||strUserid.trim().length()==0) { //判断获取的参数是否为空
response.getWriter().append("用户ID不能为空");
}
else if(strUsername == null||strUsername.trim().length()==0) {
response.getWriter().append("用户名称不能为空");
}
else {
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); //注册Oracle
String url = "jdbc:oracle:thin:@localhost:1521:orcl"; //设置连接oracle数据库
Connection conn = DBHelper.getconnection();
if(conn!=null) { //to_date ( ‘2007-12-20 18:31:34’ , ‘YYYY-MM-DD HH24:MI:SS’ )
//操作数据库
String sql = "update T_Test set user_name=?, password=?"+"where user_id=?"; //设置oracle语句的命令
//执行语句的类
PreparedStatement ps = conn.prepareStatement(sql); //创建类ps, 并下达执行命令
ps.setString(1, strUsername); //设置写入oracle表中的值
ps.setString(2, strPW);
ps.setString(3, strUserid);
int row = ps.executeUpdate(); //执行语句的命令并返回数据行数
ps.close();
conn.close();
response.sendRedirect("findoracle");
}
else
{
response.getWriter().append("连接数据库失败");
}
} catch (Exception e) {
response.getWriter().append(e.getMessage());
}
}
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
5, 删除数据(包括提交事务, 添加日志)
package oraclejdbc; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hanqi.DBHelper; import java.sql.*; public class oracledelete extends HttpServlet {
private static final long serialVersionUID = 1L; public oracledelete() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //设置字符集
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
String userid = request.getParameter("userid"); try {
Connection conn = DBHelper.getconnection();
if(userid!=null&&userid.trim().length()>0) {
conn.setAutoCommit(false);
//可以直接组合语句, 但是这样有一定的风险, 当后面的参数值比较多的时候容易遗漏
//String sql = "delete from t_test where user_id = '"+userid+"'";
String sql = "delete from t_test where user_id = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, userid.trim());
int row = pst.executeUpdate();
//保存日志
try {
//构建sql语句
sql = "insert into t_log (log_id, log, create_time) values(sq_log_id.nextval,?,?)";
pst = conn.prepareStatement(sql);
pst.setString(1, "删除了"+userid.trim()+"的记录");
//实例化一个时间
java.util.Date dt = new java.util.Date();
//java.sql.Date d = new java.sql.Date(dt.getTime()); //只是生成一个日期的值
java.sql.Time d = new java.sql.Time(dt.getTime()); //日期和时间都会生成
pst.setTime(2, d);
pst.executeUpdate(); //执行构建的语句
conn.commit();
}
catch(Exception ex) {
conn.rollback();
//response.getWriter().append("写入日志时出错");
}
finally { //使用finally关键字, 不管出错与否, 都要释放资源
try {
pst.close();
conn.close();
}
catch(Exception ex1) {
conn.close();
}
}
}
else {
response.getWriter().append("userid不能为空");
}
}
catch (Exception e) {
response.getWriter().append(e.getMessage()+"异常信息");
}
response.sendRedirect("findoracle");
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
6, 批处理数据
package oraclejdbc; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.hanqi.DBHelper; import java.sql.*;
import java.util.*; public class BatchAdd extends HttpServlet {
private static final long serialVersionUID = 1L; public BatchAdd() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //设置字符集
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PreparedStatement pps = null;
Connection conn = null;
try {
conn = DBHelper.getconnection();
if(conn!=null) {
try {
//批量插入
String sql = "insert into t_test(user_id, user_name, password) values(?,?,?)";
pps = conn.prepareStatement(sql);
Random rd = new Random();
//用for循环控制插入的个数
for(int i = 0; i<10; i++) {
int m = rd.nextInt(1000);
pps.setString(1, ""+m);
pps.setString(2, "abc"+i);
pps.setString(3, ""+(++i+119));
pps.addBatch();
}
int[] n = pps.executeBatch(); //返回值是一个int[]型数组, 如果插入成功的话, 那数组的每个值都是 -2
response.getWriter().append("已添加"+n.length+"条数据");
} catch(Exception e2) {
response.getWriter().append(e2.getMessage());
}
finally {
pps.close();
conn.close();
}
} //这个括号是if 的
} catch(Exception e) {
response.getWriter().append(e.getMessage());
}
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
7, 显示数据
package com.hanqi; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class findoracle extends HttpServlet {
private static final long serialVersionUID = 1L; public findoracle() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //设置字符集
response.setContentType("text/html; charset=UTF-8");
try {
//这三行可以封装一个类
Class.forName("oracle.jdbc.driver.OracleDriver"); //注册Oracle驱动
String url = "jdbc:oracle:thin:@localhost:1521:orcl"; //设置连接oracle数据库
Connection conn = DriverManager.getConnection(url, "test1204", "1234"); //登录oracle, 连接oracle用户
if(conn!=null) {
//操作数据库
String sql = "select * from t_test"; //设置oracle语句的命令
//strUsername = new String(strUsername.getBytes("iso-8859-1"),"utf-8"); //转码
Statement stm = conn.createStatement();
//执行查询语句, 返回值为ResultSet结果集
ResultSet rs = stm.executeQuery(sql);
ArrayList<User> array = new ArrayList<User>();
//User u = new User();
if(rs!=null) {
//遍历查询结果
while(rs.next()) { //next();判断rs是否有下一个值, 返回的是一个bealoon型数据
User u = new User();
//取出结果集中的value, 也可以写成"u.setUserID(rs.getString(int));"
u.setUserID(rs.getString("user_id"));
u.setUserName(rs.getString("user_name"));
u.setPassWord(rs.getString("password"));
//将取出的结果添加到一个集合中去, 这里集合的内容会经常用到, Result型结果集取出后通常都放在集合里面
array.add(u);
//response.getWriter().append(u.getUserID()+u.getUserName()+u.getPassWord()+"<br>");
}
request.setAttribute("userlist", array);
conn.close();
stm.close();
rs.close();
}
else {
response.getWriter().append("无查询结果");
}
}
else {
response.getWriter().append("连接数据库失败");
}
} catch (Exception e) {
response.getWriter().append(e.getMessage());
}
//跳转页面
request.getRequestDispatcher("show.jsp").forward(request, response);
//response.sendRedirect("show");这个语句不起作用的
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
8, 显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="com.hanqi.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示查询结果</title>
</head>
<body>
<%
Object obj = request.getAttribute("userlist");
if(obj!=null) {
ArrayList<User> array = (ArrayList<User>)obj;
//foreach遍历,输出结果的时候写一个out.print("");就可以了,为了看的直观写了好几个out.print("");
for(User u:array) {
out.print(u.getUserID()+"/ "+u.getUserName()+"/ "+u.getPassWord()+"<br>");
out.print("\t <a href='oracledelete?userid="+u.getUserID()+"'>删除</a><br>");
out.print("<form action='Edit' method='post'>");
//设置隐藏域的意义在于, 修改用户名和密码的时候必须先将用户代码取出作为唯一的值, 修改完再将用户代码传回表中
out.print("<input type='hidden' name='userid' value='"+u.getUserID()+"'/>"); //隐藏域的应用
out.print("用户名称:<input type='text' name='username' value='"+u.getUserName()+"' /><br>");
out.print("用户密码:<input type='text' name='password' value='"+u.getPassWord()+"' /><br>");
out.print("<input type='submit' value='修改' />");
out.print("</form>");
out.print("<br>"+"———————————————————"+"<br>");
}
}
else {
out.print("无数据返回");
}
%>
<br>
<a href="zhuce.html">注册用户信息</a><br><br><a href="BatchAdd">批量添加用户</a>
</body>
</html>
实例: Java代码操作oracle数据库(JDBC+sevrlet+jsp+html)的更多相关文章
- 使用java代码编辑oracle数据库
package com.hanqi; import java.io.IOException; import java.sql.Connection; import java.sql.DriverMan ...
- java代码连接oracle数据库的方法
oracle连接数据库的方式和mysql是大同小异的,主要的困难点在于oracle的数据库驱动包和依赖只有官方提供,如果你是用maven添加依赖的话,需要自己从官网下载jar包安装到你本地的maven ...
- 【JDBC】java PreparedStatement操作oracle数据库
************************************************************************ ****原文:blog.csdn.net/clark_ ...
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- Java java jdbc thin远程连接并操作Oracle数据库
JAVA jdbc thin远程连接并操作Oracle数据库 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 编码工具:Eclipse 编码平台:W ...
- loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试
调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...
- Java操作Oracle数据库以及调用存储过程
操作Oracle数据库 publicclass DBConnection { //jdbc:oracle:thin:@localhost:1521:orcl publicstaticf ...
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...
- PHP操作Oracle数据库
原文出处 (这是来自“百度文库”中的文章写得很不错) PHP操作Oracle数据库(OCI数据抽象层)OCI(Oracle 8 Call-Interface)是PHP中内置的数据库抽象层函数.下面针对 ...
随机推荐
- 在jenkins和sonar中集成jacoco(四)--在sonar中集成jacoco
首先要得到之前的单元测试和集成测试的覆盖率文件,还有对应的class文件以及单元测试的覆盖率报告,材料准备齐全之后,使用如下命令: build.xml 1 2 3 4 5 6 7 8 9 10 11 ...
- instancetype 与id
1 .依照cocoa的命名规则,alloc,init这类方法,如果以id为返回类型,会返回类本身的类型,但类方法的返回类型,LLVM(clang)编译器无法判断,也就是说如果 用id作为返 ...
- Nginx 反向代理 如何在web应用中获取用户ip
转载:http://blog.csdn.net/bao19901210/article/details/52537279 问题背景: 在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断 ...
- ios 加密解密工具类字符判断等
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface Helpers : NSObject ...
- CNN中卷积层的计算细节
原文链接: https://zhuanlan.zhihu.com/p/29119239 卷积层尺寸的计算原理 输入矩阵格式:四个维度,依次为:样本数.图像高度.图像宽度.图像通道数 输出矩阵格式:与输 ...
- 记一次git fatal: Unable to find remote helper for 'https'问题的解决
登陆到远程linux服务器上,使用git, clone的时候报“fatal: Unable to find remote helper for 'https'”错,没管,绕过,使用git clone ...
- UOJ22. 【UR #1】外星人【DP】【思维】
LINK 题目大意 给你一个序列和一个值x 问你用某种方式对序列安排顺序之后一次对x取mod膜的最大值和方案数 首先发现一个性质 一个数之后所有比它大的数都没有贡献 考虑怎么利用这个性质? 就可以从小 ...
- LTE-Advanced(4G)主要技术学习:CA、CoMp、HetNet
CA:Carrier Aggregation,载波聚合 从LTE到LTE-Advanced演进过程中,更宽频谱的需求是影响演进的最重要因素,为此3GPP标准提出了载波聚合技术.简单地说,它可以将多个载 ...
- hive 处理小文件,减少map数
1.hive.merge.mapfiles,True时会合并map输出.2.hive.merge.mapredfiles,True时会合并reduce输出.3.hive.merge.size.per. ...
- git回滚分支版本到指定版本
昨天提交代码时Eclipse凌乱了,本来拉了dev-20190201分支的,结果提交时竟然跑到dev分支了.为了把dev分支回滚,可以有两种方式:Eclipse和命令行. 先说简单的命令行方式,先用g ...