zoukankan      html  css  js  c++  java
  • JavaWeb程序对SQLserver数据库的增删改查操作

    声明:学了几天终于将增删改查的操作掌握了,也发现了一些问题,所以总结一下.

    重点:操作数据库主要用的是SQL语句跟其他无关.

    一:前提知识:PreparedStatement

    PreperedStatement是Statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题。
      Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。

    举例:

    1 PreperedStatement mi = Connection.preparedStatement();
    2 try{
    3 i = mi.executeUpdate();
    4  }catch(Exception e){
    5  if(i != 1)
    6 {
    7  System.out.println("修改不成功");
    8  }
    9  }

    二:实际例子:

    1: 编写index.jsp文件通过JSTL中的<c:redirect>标签指向servlet

      1 package com.ll;
      2 
      3 import java.io.IOException;
      4 import java.sql.*;
      5 import java.util.ArrayList;
      6 import java.util.List;
      7 
      8 import javax.servlet.ServletException;
      9 import javax.servlet.annotation.WebServlet;
     10 import javax.servlet.http.HttpServlet;
     11 import javax.servlet.http.HttpServletRequest;
     12 import javax.servlet.http.HttpServletResponse;
     13 
     14 import dao.Studentdao2;
     15 
     16 /**
     17  * Servlet implementation class GoodsServlet
     18  */
     19 @WebServlet("/GoodsServlet")
     20 public class GoodsServlet extends HttpServlet {
     21     private static final long serialVersionUID = 1L;
     22        
     23     /**
     24      * @see HttpServlet#HttpServlet()
     25      */
     26     public GoodsServlet() {
     27         super();
     28         // TODO Auto-generated constructor stub
     29     }
     30 
     31     /**
     32      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     33      */
     34     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     35         // TODO Auto-generated method stub
     36         String action = request.getParameter("action");
     37         if(action.equals("zongjin")){
     38             
     39             try {
     40                 query(request,response);
     41             } catch (Exception e) {
     42                 // TODO Auto-generated catch block
     43                 e.printStackTrace();
     44             }
     45         }
     46         
     47         
     48         
     49     }
     50 
     51     /**
     52      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     53      */
     54     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     55         // TODO Auto-generated method stub
     56     }
     57     
     58     
     59     public void query(HttpServletRequest request, HttpServletResponse response) throws Exception{
     60         Studentdao2 conn = new Studentdao2();
     61         String sql = "Select *from Student";
     62     
     63          /*
     64         //调用函数去向数据库中添加数据
     65           String addsql = "于海-19-软件1501-男";
     66           conn.addsql(addsql);
     67          */ 
     68         
     69         
     70         /*
     71          //删除数据库中的数据
     72         String strdelete = "Delete from Student Where 姓名 = '于海'";
     73         conn.deletesql(strdelete);
     74         */
     75         
     76         /*
     77          //修改数据库中的数据
     78         String update = "Update Student set 姓名='宗进' Where 姓名 = '小明' ";
     79         conn.updateSql(update);
     80         */
     81         
     82         
     83         ResultSet rs =conn.executeQuery1(sql);//调用自制函数来接受查询的结果
     84         List list = new ArrayList();
     85         while(rs.next())
     86         {
     87             Student f = new Student();
     88             //equals比较的结果为false是因为从数据库中返回的字符串为"宗进          "    
     89             f.setBanji(rs.getString("班级"));
     90             f.setName(rs.getString("姓名"));
     91             f.setSex(rs.getString("性别"));
     92             f.setTime(rs.getString("年龄"));        
     93             
     94             list.add(f);
     95             
     96         }
     97         
     98         request.setAttribute("list", list);
     99         request.getRequestDispatcher("sql2.jsp").forward(request, response);
    100         
    101         
    102         
    103         
    104     }
    105     public String cat(String str){
    106         String[] arr = str.split(" ");
    107         String s = arr[0];
    108         return s;
    109         
    110     }
    111 
    112 }

    3.Servlet的web.xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     3   <display-name>JSTL</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <jsp-config>
    13     <taglib>
    14       <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
    15       <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
    16     </taglib>
    17     <taglib>
    18       <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    19       <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
    20     </taglib>
    21     <taglib>
    22       <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
    23       <taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
    24     </taglib>
    25     <taglib>
    26       <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
    27       <taglib-location>/WEB-INF/tld/x.tld</taglib-location>
    28     </taglib>
    29   </jsp-config>
    30   
    31   <servlet>
    32       <servlet-name>GoodsServlet</servlet-name>
    33       <servlet-class>com.ll.GoodsServlet</servlet-class>
    34   </servlet>
    35   
    36   <servlet-mapping>
    37        <servlet-name>GoodsServlet</servlet-name>
    38        <url-pattern>/com.ll.GoodsServlet</url-pattern>
    39   </servlet-mapping>
    40   
    47   
    48 </web-app>

    4.创建一个用于连接数据库并且处理的类

     1 package dao;
     2 
     3 import java.io.InputStream;
     4 import java.sql.Connection;
     5 import java.sql.DriverManager;
     6 import java.sql.PreparedStatement;
     7 import java.sql.ResultSet;
     8 import java.sql.SQLException;
     9 import java.sql.Statement;
    10 import java.util.Properties;
    11 
    12 public class Studentdao2 {
    13      public Connection conn = null;
    14      public String url = null;
    15      public Statement stmt = null;
    16      public ResultSet rs = null;
    17      public static String propFilename = "Studentdao2.properties";
    18      private static Properties prop = new Properties();
    19      private static String  dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    20      private static String dbUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=StudentManagement";
    21      private static String  addSql = "insert into Student values(?,?,?,?)";
    22      private static String updateSql = "update Student set 姓名=?,年龄=?,班级=?,性别=?";//用于整体修改数据库中的值
    23      public Studentdao2(){
    24          try{
    25             // InputStream in = getClass().getResourceAsStream(propFilename);
    26             // prop.load(in);
    27             // dbClassName = prop.getProperty("DB_URL",dbUrl);
    28             // dbUrl = prop.getProperty("DB_URL", dbUrl);
    29              Class.forName(dbClassName);
    30              conn = DriverManager.getConnection(dbUrl, "sa", "zongjin123");
    31              if(conn != null)
    32              {
    33                  System.out.println("连接成功");
    34              }
    35              else{
    36                  System.out.println("连接失败");
    37              }
    38              stmt = conn.createStatement();
    39              
    40          }catch(Exception e){
    41              e.printStackTrace();
    42          }
    43          
    44      }
    45     public ResultSet executeQuery1(String sql) throws Exception {
    46         // TODO Auto-generated method stub
    47         this.rs = this.stmt.executeQuery(sql);
    48         return this.rs;
    49     }
    50     public void addsql(String sql) throws Exception{
    51         PreparedStatement add = conn.prepareStatement(addSql);
    52         String[] shuju = sql.split("-");
    53         System.out.println(shuju[0]);
    54         add.setString(1, shuju[0]);
    55         add.setString(2,shuju[1]);
    56         add.setString(3,shuju[2]);
    57         add.setString(4, shuju[3]);
    58         add.executeUpdate();
    59         add.close();    
    60     }
    61     public void deletesql(String sql) throws Exception{
    62         int i = 0;
    63         PreparedStatement delete = conn.prepareStatement(sql);
    64         try{
    65            i = delete.executeUpdate();
    66         }catch(Exception e){
    67             if(i != 1)
    68             {
    69                 System.out.println("删除失败");
    70             }
    71         }
    72         delete.close();
    73     }
    74     public void updateSql(String sql)throws Exception
    75     {
    76         PreparedStatement update = conn.prepareStatement(sql);
    77         //用于整体修改数据库中的值,但是一般直接用sq语句来进行操作数据库
    78         //update.setString(2, str);
    79         //String[] shuju = sql.split("-");
    80         //System.out.println(shuju[0]);
    81         //update.setString(1, shuju[0]);
    82         //update.setString(2,shuju[1]);
    83         //update.setString(3,shuju[2]);
    84         //update.setString(4, shuju[3]);
    85         update.executeUpdate();
    86         update.close();
    87     }
    88     
    89 }

    5.编写用于存储数据的student类

     1 package com.ll;
     2 
     3 public class Student {
     4     private String name;
     5     private String time;
     6     private String banji;
     7     private String sex;
     8     public String getBanji() {
     9         return banji;
    10     }
    11     public void setBanji(String banji) {
    12         this.banji = banji;
    13     }
    14     
    15     public String getName() {
    16         return name;
    17     }
    18     public void setName(String name) {
    19         this.name = name;
    20     }
    21     public String getTime() {
    22         return time;
    23     }
    24     public void setTime(String time) {
    25         this.time = time;
    26     }
    27     
    28     public String getSex() {
    29         return sex;
    30     }
    31     public void setSex(String sex) {
    32         this.sex = sex;
    33     }
    34     
    35 
    36 }

    6运行index.jsp文件来运行

  • 相关阅读:
    C/S WinFORM 快速开发框架 MyRapid快速开发框架更新日志 ---数据权限控制
    C/S WinFORM 快速开发框架 MyRapid快速开发框架更新日志 ---自动生成操作手册
    C/S WinFORM 快速开发框架 MyRapid快速开发框架更新日志 ---添加模块流程图
    代码分享:给窗体添加水印
    版本需更新提醒
    如何做好软件自动更新
    做项目管理踩过的坑
    团队开发的代码管理(VS)
    Java8尽管很香,你想过升级到Java11吗?会踩那些坑?
    这个 Spring 循环依赖的坑,90% 以上的人都不知道
  • 原文地址:https://www.cnblogs.com/zongjin/p/7511762.html
Copyright © 2011-2022 走看看