zoukankan      html  css  js  c++  java
  • 实例: Java代码操作oracle数据库(JDBC+sevrlet+jsp+html)

    1, 注册页面

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     5 <title>用户注册</title>
     6 </head>
     7 <body>
     8 <form id="uform" action="saveuser" method="post">
     9 用户代码:<input id="userid" type="text" name="userid" width=30 />
    10 <br><br>
    11 用户名称:<input id="username" type="text" name="username" width=30 />
    12 <br><br>
    13 登录密码:<input id="password" type="password" name="password" width=30 />
    14 <br><br>
    15 确认密码:<input id="queren" type="password" name="queren" width=30 />
    16 <br><br>
    17 <input type="submit" value="注册" /><br><a href="findoracle">显示所有用户</a>
    18 </form>
    19 </body>
    20 </html>

    2, 保存用户数据

     1 package com.hanqi;
     2 
     3 import java.io.IOException;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.*;
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 
    12 public class saveuser extends HttpServlet {
    13     private static final long serialVersionUID = 1L;
    14 
    15     public saveuser() {
    16         super();
    17     }
    18 
    19     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    20         request.setCharacterEncoding("UTF-8");                            //设置字符集
    21         response.setContentType("text/html; charset=UTF-8");
    22         response.setCharacterEncoding("UTF-8");
    23         String strUserid = request.getParameter("userid");             //获取传递过来的参数
    24         String strUsername = request.getParameter("username");
    25         String strPW = request.getParameter("password");
    26         if(strUserid == null||strUserid.trim().length()==0) {              //判断获取的参数是否为空
    27             response.getWriter().append("用户ID不能为空");
    28         }
    29         else if(strUsername == null||strUsername.trim().length()==0) {
    30             response.getWriter().append("用户名称不能为空");
    31         }
    32         else {
    33             try {
    34                 Class.forName("oracle.jdbc.driver.OracleDriver");                    //注册Oracle
    35                 String url = "jdbc:oracle:thin:@localhost:1521:orcl";               //设置连接oracle数据库
    36                 Connection conn = DriverManager.getConnection(url, "test1204", "1234");           //登录oracle, 连接oracle用户
    37                     if(conn!=null) {                                                      
    38                         //操作数据库
    39                         String sql = "insert into T_Test (user_id, user_name, password)"+"values(?,?,?)";         //设置oracle语句的命令
    40                         //执行语句的类
    41                         PreparedStatement ps = conn.prepareStatement(sql);           //创建类ps, 并下达执行命令
    42                         //strUsername = new String(strUsername.getBytes("iso-8859-1"),"utf-8");         
    43                         //转码的问题, 当这个页面接收过来的参数是以post方法传来的, 完全可以只用一个setCharacterEncoding("UTF-8");就能进行转码
    44                         ps.setString(1, strUserid);            //设置写入oracle表中的值
    45                         ps.setString(2, strUsername);
    46                         ps.setString(3, strPW);
    47                         int row = ps.executeUpdate();          //执行语句的命令并返回数据行数
    48                         if(row>0) {
    49                             response.getWriter().append("保存数据成功, 保存"+row+"条数据成功!");
    50                         }
    51                         else {
    52                             response.getWriter().append("保存数据失败");
    53                         }
    54                         ps.close();
    55                         conn.close();
    56                     }
    57                     else
    58                     {
    59                         response.getWriter().append("连接数据库失败");
    60                     }
    61                            } catch (Exception e) {
    62                 e.printStackTrace();
    63                 response.getWriter().append(e.getMessage());
    64             }
    65         }
    66     response.getWriter().append("<br><a href='zhuce.html'>返回注册</a>");
    67     response.getWriter().append("<br><a href='findoracle'>显示所有用户</a>");
    68     }
    69 
    70     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    71         doGet(request, response);
    72     }
    73 }

    3, 工具类

     1 package com.hanqi;
     2 //关于用户的实体类
     3 public class User {
     4     //用户代码
     5     private String UserID;
     6 public String getUserID()
     7     {
     8         return UserID;
     9     }
    10 public void setUserID(String UID)
    11     {
    12         this.UserID = UID;
    13     }
    14 
    15     //用户名称
    16     private String UserName;
    17 public String getUserName() 
    18     {
    19         return UserName;
    20     }
    21 public void setUserName(String userName) 
    22     {
    23         UserName = userName;
    24     }
    25 
    26     //密码
    27     private String PassWord;
    28 public String getPassWord() 
    29     {
    30         return PassWord;
    31     }
    32 public void setPassWord(String passWord) 
    33     {
    34         PassWord = passWord;
    35     }
    36 }
    37 
    38 
    39 
    40 
    41 
    42 
    43 
    44 
    45 
    46 
    47 
    48 
    49 
    50 
    51 
    52 
    53 
    54 
    55 //定义连接数据库的方体
    56 package com.hanqi;
    57 
    58 import java.sql.*;
    59 
    60 public class DBHelper {
    61     public static Connection getconnection() throws Exception {
    62         Class.forName("oracle.jdbc.driver.OracleDriver");
    63         String url = "jdbc:oracle:thin:@localhost:1521:orcl";
    64         Connection conn = DriverManager.getConnection(url, "test1204", "1234");
    65         return conn;
    66     }
    67 
    68 }

    4, 修改数据

     1 package oraclejdbc;
     2 
     3 import java.io.IOException;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.PreparedStatement;
     7 
     8 import javax.servlet.ServletException;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 import com.hanqi.DBHelper;
    14 
    15 public class Edit extends HttpServlet {
    16     private static final long serialVersionUID = 1L;
    17 
    18     public Edit() {
    19         super();
    20     }
    21 
    22     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    23         request.setCharacterEncoding("UTF-8");                            //设置字符集
    24         response.setContentType("text/html; charset=UTF-8");        
    25         String strUserid = request.getParameter("userid");             //获取传递过来的参数
    26         String strUsername = request.getParameter("username");
    27         String strPW = request.getParameter("password");
    28         if(strUserid == null||strUserid.trim().length()==0) {              //判断获取的参数是否为空
    29             response.getWriter().append("用户ID不能为空");
    30         }
    31         else if(strUsername == null||strUsername.trim().length()==0) {
    32             response.getWriter().append("用户名称不能为空");
    33         }
    34         else {
    35             try {
    36                 Class.forName("oracle.jdbc.driver.OracleDriver");                    //注册Oracle
    37                 String url = "jdbc:oracle:thin:@localhost:1521:orcl";               //设置连接oracle数据库
    38                 Connection conn = DBHelper.getconnection();
    39                     if(conn!=null) {                                                      //to_date ( ‘2007-12-20 18:31:34’ , ‘YYYY-MM-DD HH24:MI:SS’ )
    40                         //操作数据库
    41                         String sql = "update T_Test set user_name=?, password=?"+"where user_id=?";         //设置oracle语句的命令
    42                         //执行语句的类
    43                         PreparedStatement ps = conn.prepareStatement(sql);           //创建类ps, 并下达执行命令
    44                         ps.setString(1, strUsername);            //设置写入oracle表中的值
    45                         ps.setString(2, strPW);
    46                         ps.setString(3, strUserid);
    47                         int row = ps.executeUpdate();          //执行语句的命令并返回数据行数
    48                         ps.close();
    49                         conn.close();
    50                         response.sendRedirect("findoracle");
    51                     }
    52                     else
    53                     {
    54                         response.getWriter().append("连接数据库失败");
    55                     }
    56                            } catch (Exception e) {
    57                 response.getWriter().append(e.getMessage());
    58             }
    59         }
    60     }
    61 
    62     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    63         doGet(request, response);
    64     }
    65 }

    5, 删除数据(包括提交事务, 添加日志)

     1 package oraclejdbc;
     2 
     3 import java.io.IOException;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.http.HttpServlet;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 import com.hanqi.DBHelper;
     9 
    10 import java.sql.*;
    11 
    12 public class oracledelete extends HttpServlet {
    13     private static final long serialVersionUID = 1L;
    14 
    15     public oracledelete() {
    16         super();
    17     }
    18 
    19     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    20         request.setCharacterEncoding("UTF-8");                            //设置字符集
    21         response.setContentType("text/html; charset=UTF-8");
    22         response.setCharacterEncoding("UTF-8");
    23         String userid = request.getParameter("userid");
    24         
    25     try {
    26             Connection conn = DBHelper.getconnection();
    27             if(userid!=null&&userid.trim().length()>0) {
    28                 conn.setAutoCommit(false);
    29                 //可以直接组合语句, 但是这样有一定的风险, 当后面的参数值比较多的时候容易遗漏
    30                 //String sql = "delete from t_test where user_id = '"+userid+"'";
    31                 String sql = "delete from t_test where user_id = ?";
    32                 PreparedStatement pst = conn.prepareStatement(sql);
    33                 pst.setString(1, userid.trim());
    34                 int row = pst.executeUpdate();
    35                 //保存日志
    36                 try {
    37                         //构建sql语句
    38                         sql = "insert into t_log (log_id, log, create_time) values(sq_log_id.nextval,?,?)";
    39                         pst = conn.prepareStatement(sql);
    40                         pst.setString(1, "删除了"+userid.trim()+"的记录");
    41                         //实例化一个时间
    42                         java.util.Date dt = new java.util.Date();
    43                         //java.sql.Date d = new java.sql.Date(dt.getTime());               //只是生成一个日期的值
    44                         java.sql.Time d = new java.sql.Time(dt.getTime());                 //日期和时间都会生成
    45                         pst.setTime(2, d);
    46                         pst.executeUpdate();                   //执行构建的语句
    47                         conn.commit();
    48                        } 
    49                 catch(Exception ex) {
    50                             conn.rollback();
    51                             //response.getWriter().append("写入日志时出错");
    52                         }
    53                 finally {                      //使用finally关键字, 不管出错与否, 都要释放资源
    54                     try {
    55                             pst.close();
    56                             conn.close();
    57                     } 
    58                     catch(Exception ex1) {
    59                         conn.close();
    60                     }
    61                 }
    62             }
    63             else {
    64                 response.getWriter().append("userid不能为空");
    65             }
    66          } 
    67     catch (Exception e) {
    68                 response.getWriter().append(e.getMessage()+"异常信息");
    69             }
    70     response.sendRedirect("findoracle");
    71     }
    72 
    73     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    74         // TODO Auto-generated method stub
    75         doGet(request, response);
    76     }
    77 }

    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, 显示数据

     1 package com.hanqi;
     2 
     3 import java.io.IOException;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.*;
     7 import java.util.*;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.http.HttpServlet;
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 
    14 public class findoracle extends HttpServlet {
    15     private static final long serialVersionUID = 1L;
    16 
    17     public findoracle() {
    18         super();
    19     }
    20 
    21     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    22         request.setCharacterEncoding("UTF-8");                            //设置字符集
    23         response.setContentType("text/html; charset=UTF-8");
    24         try {
    25             //这三行可以封装一个类
    26             Class.forName("oracle.jdbc.driver.OracleDriver");                    //注册Oracle驱动
    27             String url = "jdbc:oracle:thin:@localhost:1521:orcl";               //设置连接oracle数据库
    28             Connection conn = DriverManager.getConnection(url, "test1204", "1234");           //登录oracle, 连接oracle用户
    29                 if(conn!=null) {
    30                     //操作数据库
    31                     String sql = "select * from t_test";         //设置oracle语句的命令
    32                     //strUsername = new String(strUsername.getBytes("iso-8859-1"),"utf-8");         //转码
    33                     Statement stm = conn.createStatement();
    34                     //执行查询语句, 返回值为ResultSet结果集
    35                     ResultSet rs = stm.executeQuery(sql);
    36                     ArrayList<User> array = new ArrayList<User>();
    37                     //User u = new User();
    38                     if(rs!=null) {
    39                         //遍历查询结果
    40                         while(rs.next()) {           //next();判断rs是否有下一个值, 返回的是一个bealoon型数据
    41                             User u = new User();
    42                             //取出结果集中的value, 也可以写成"u.setUserID(rs.getString(int));"
    43                             u.setUserID(rs.getString("user_id"));            
    44                             u.setUserName(rs.getString("user_name"));
    45                             u.setPassWord(rs.getString("password"));
    46                             //将取出的结果添加到一个集合中去, 这里集合的内容会经常用到, Result型结果集取出后通常都放在集合里面
    47                             array.add(u);
    48                             //response.getWriter().append(u.getUserID()+u.getUserName()+u.getPassWord()+"<br>");
    49                         }
    50                         request.setAttribute("userlist", array);
    51                         conn.close();
    52                         stm.close();
    53                         rs.close();
    54                     }
    55                     else {
    56                         response.getWriter().append("无查询结果");
    57                     }
    58                 }
    59                 else {
    60                     response.getWriter().append("连接数据库失败");
    61                 }
    62                        } catch (Exception e) {
    63             response.getWriter().append(e.getMessage());
    64         }
    65         //跳转页面
    66         request.getRequestDispatcher("show.jsp").forward(request, response);
    67         //response.sendRedirect("show");这个语句不起作用的
    68     }
    69 
    70     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    72         doGet(request, response);
    73     }
    74 
    75 }

    8, 显示页面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <%@ page import="com.hanqi.*" %>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>显示查询结果</title>
    10 </head>
    11 <body>
    12 <%
    13 Object obj = request.getAttribute("userlist");
    14 if(obj!=null) {
    15     ArrayList<User> array = (ArrayList<User>)obj;
    16     //foreach遍历,输出结果的时候写一个out.print("");就可以了,为了看的直观写了好几个out.print("");
    17     for(User u:array) {
    18         out.print(u.getUserID()+"/ "+u.getUserName()+"/ "+u.getPassWord()+"<br>");
    19         out.print("	 <a href='oracledelete?userid="+u.getUserID()+"'>删除</a><br>");
    20         out.print("<form action='Edit' method='post'>");
    21         //设置隐藏域的意义在于, 修改用户名和密码的时候必须先将用户代码取出作为唯一的值, 修改完再将用户代码传回表中
    22         out.print("<input type='hidden' name='userid' value='"+u.getUserID()+"'/>");             //隐藏域的应用
    23         out.print("用户名称:<input type='text' name='username' value='"+u.getUserName()+"' /><br>");
    24         out.print("用户密码:<input type='text' name='password' value='"+u.getPassWord()+"' /><br>");
    25         out.print("<input type='submit' value='修改' />");
    26         out.print("</form>");
    27         out.print("<br>"+"———————————————————"+"<br>");
    28     }
    29 }
    30 else {
    31     out.print("无数据返回");
    32 }
    33 %>
    34 <br>
    35 <a href="zhuce.html">注册用户信息</a><br><br><a href="BatchAdd">批量添加用户</a>
    36 </body>
    37 </html>
  • 相关阅读:
    微博CacheService架构浅析 对底层协议进行适配
    Lucene 查询原理 传统二级索引方案 倒排链合并 倒排索引 跳表 位图
    Linux kernel 同步机制
    对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极客公园 2018-12-01
    当中台遇上DDD,我们该如何设计微服务?
    京东技术沙龙系列之二 | 深度解析京东微服务组件平台
    gRPC设计动机和原则
    微信全文搜索优化之路
    门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结 提高响应性能的手段归根结底就是三板斧:队列(Queue)、缓存(Cache)和分区(Sharding)
    现加减乘除4则运算
  • 原文地址:https://www.cnblogs.com/wgbs25673578/p/5032060.html
Copyright © 2011-2022 走看看