JDBC数据库之添加数据

通过JDBC向数据库中添加数据,可以使用INSERT语句实现插入数据SQL语句,对于SQL语句中的参数可以只用占位符“?”代替,然后通过PreparedStatement对其赋值以及执行SQL。代码如下:

(1)添加图书页面,并不复杂,只是一个简单的表单,页面采用UTF-8编码方式。

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 4 <title>添加图书</title>
 5 <script type="text/javascript">
 6     function check(form){
 7         with(form){
 8             if(name.value==""){
 9                 alert("图书名称不能为空!");
10                 return false;
11             }
12             if(price.value==""){
13                 alert("图书价格不能为空!");
14                 return false;
15             }
16             if(author.value==""){
17                 alert("图书作者不能为空!");
18                 return false;
19             }
20             return true;
21         }
22     }
23 </script>
24 </head>
25 <body>
26     <form action="AddBook.jsp" method="post" onSubmit="return check(this)">
27         <div style="background:red;text-align:center;margin:0 auto;">
28            <div>添加图书信息 </div>
29            <div>
30                图书名称:<input type="text" name="name"><br><br>
31                图书价格:<input type="text" name="price"><br><br>
32                图书数量:<input type="text" name="bookCount"><br><br>
33                图书作者:<input type="text" name="author"><br><br>
34                <input type="submit" value="添    加">
35            </div>
36         </div>
37     </form>
38 </body>
39 </html>

(2)结果展示页面,引入了一个javaBean类,同样采用UTF-8编码方式

 1 <%@ page import="java.sql.Connection" %>
 2 <%@ page import="java.sql.PreparedStatement" %>
 3 <%@ page import="java.sql.DriverManager" %>
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>添加结果页</title>
 8 </head>
 9 <body>
10     <jsp:useBean id="book" class="com.bean.Book"></jsp:useBean>
11     <jsp:setProperty property="*" name="book"/>
12     <%
13         String url = "jdbc:mysql://localhost:3306/test";
14         String username = "root";
15         String password = "123456";
16         String driver = "com.mysql.jdbc.Driver";
17         String sql = "insert into book(name,price,bookCount,author) values(?,?,?,?)";
18         Connection conn = null;
19         PreparedStatement ps = null;
20         
21         try{
22             Class.forName(driver);
23         }catch(ClassNotFoundException e){
24             out.print("Class.forName(driver)出错");
25             e.printStackTrace();
26         }
27         try{
28             conn = DriverManager.getConnection(url,username,password);
29             
30             ps = conn.prepareStatement(sql);
31             
32             ps.setString(1, book.getName());
33             
34             ps.setDouble(2, book.getPrice());
35             ps.setInt(3, book.getBookCount());
36             ps.setString(4, book.getAuthor());
37             
38             int row = ps.executeUpdate();
39             if(row > 0){
40                 out.print("图书添加成功!");
41             }
42             ps.close();
43             conn.close();
44             
45         }catch(Exception e){
46             out.print("图书添加失败");
47             e.printStackTrace();
48         }
49         
50        
51     %>
52     <br>
53     <a href="index.jsp">返回添加页面</a>
54 </body>
55 </html>

(3)后台javaBean类(Book.java)

 1 package com.bean;
 2 
 3 public class Book {
 4     private String name;
 5     private double price;
 6     private int bookCount;
 7     private String author;
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public double getPrice() {
15         return price;
16     }
17     public void setPrice(double price) {
18         this.price = price;
19     }
20     public int getBookCount() {
21         return bookCount;
22     }
23     public void setBookCount(int bookCount) {
24         this.bookCount = bookCount;
25     }
26     public String getAuthor() {
27         return author;
28     }
29     public void setAuthor(String author) {
30         this.author = author;
31     }
32    
33 }

(4)由于从数据是从页面要传送到数据库的,所以这里会涉及到中文乱码的问题;所以我们的数据库表中的字段编码方式也是采用和网页同样的编码方式UTF-8,但是光就这样还是会出现中文乱码的,为了解决乱码的问题,我们在后台代码中加入一个字符过滤器。字符过滤器代码如下:

 1 package com.filter;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.Filter;
 5 import javax.servlet.FilterChain;
 6 import javax.servlet.FilterConfig;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10 import javax.servlet.annotation.WebFilter;
11 
12 /**
13  * 编码选择器
14  * Servlet Filter implementation class CharactorFilter
15  */
16 @WebFilter("/CharactorFilter")
17 public class CharactorFilter implements Filter {
18     //字符串编码
19     String encoding = null;
20     public CharactorFilter() {
21         
22     }
23 
24     /**
25      * @see Filter#destroy()
26      */
27     public void destroy() {
28         encoding = null;
29     }
30 
31     /**
32      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
33      */
34     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
35         //判断字符编码是否为空
36         if(encoding != null) {
37             //设置request的编码方式
38             request.setCharacterEncoding(encoding);
39             //设置response字符编码
40             response.setCharacterEncoding(encoding);
41             response.setContentType("text/html;charset"+encoding);
42         }
43         
44         chain.doFilter(request, response);
45     }
46 
47     /**
48      * @see Filter#init(FilterConfig)
49      */
50     public void init(FilterConfig fConfig) throws ServletException {
51         encoding = fConfig.getInitParameter("encoding");//初始化字符过滤器,getInitParameter("encoding")中的encoding为配置在web.xml文件中的参数
52     }
53 
54 }

字符过滤器完成后,最后一步还要配置web.xml文件,需要在<web-app></web-app>之间添加如下配置代码具体如下:

 1 <filter>
 2     <!--过滤器类名,必须和后台过滤器类名保持一致-->
 3     <filter-name>CharactorFilter</filter-name>
 4     <!--过滤器完整类名-->
 5     <filter-class>com.filter.CharactorFilter</filter-class>
 6     <!--开始配置初始化参数-->
 7     <init-param>
 8       <!--参数名称-->
 9       <param-name>encoding</param-name>
10       <!--参数值-->
11       <param-value>UTF-8</param-value>
12     </init-param>
13   </filter>
14   <!--开始配置过滤器映射-->
15   <filter-mapping>
16     <!--过滤器名称-->
17     <filter-name>CharactorFilter</filter-name>
18     <映射到作用的url, /*表示作用到所有文件>
19     <url-pattern>/*</url-pattern>
20   </filter-mapping>

最后运行得到如下结果

原文地址:https://www.cnblogs.com/lihuibin/p/7469803.html