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

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

 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加图书</title>
<script type="text/javascript">
function check(form){
with(form){
if(name.value==""){
alert("图书名称不能为空!");
return false;
}
if(price.value==""){
alert("图书价格不能为空!");
return false;
}
if(author.value==""){
alert("图书作者不能为空!");
return false;
}
return true;
}
}
</script>
</head>
<body>
<form action="AddBook.jsp" method="post" onSubmit="return check(this)">
<div style="background:red;text-align:center;margin:0 auto;">
<div>添加图书信息 </div>
<div>
图书名称:<input type="text" name="name"><br><br>
图书价格:<input type="text" name="price"><br><br>
图书数量:<input type="text" name="bookCount"><br><br>
图书作者:<input type="text" name="author"><br><br>
<input type="submit" value="添 加">
</div>
</div>
</form>
</body>
</html>

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

 <%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.DriverManager" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加结果页</title>
</head>
<body>
<jsp:useBean id="book" class="com.bean.Book"></jsp:useBean>
<jsp:setProperty property="*" name="book"/>
<%
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
String driver = "com.mysql.jdbc.Driver";
String sql = "insert into book(name,price,bookCount,author) values(?,?,?,?)";
Connection conn = null;
PreparedStatement ps = null; try{
Class.forName(driver);
}catch(ClassNotFoundException e){
out.print("Class.forName(driver)出错");
e.printStackTrace();
}
try{
conn = DriverManager.getConnection(url,username,password); ps = conn.prepareStatement(sql); ps.setString(1, book.getName()); ps.setDouble(2, book.getPrice());
ps.setInt(3, book.getBookCount());
ps.setString(4, book.getAuthor()); int row = ps.executeUpdate();
if(row > 0){
out.print("图书添加成功!");
}
ps.close();
conn.close(); }catch(Exception e){
out.print("图书添加失败");
e.printStackTrace();
} %>
<br>
<a href="index.jsp">返回添加页面</a>
</body>
</html>

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

 package com.bean;

 public class Book {
private String name;
private double price;
private int bookCount;
private String author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getBookCount() {
return bookCount;
}
public void setBookCount(int bookCount) {
this.bookCount = bookCount;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
} }

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

 package com.filter;

 import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter; /**
* 编码选择器
* Servlet Filter implementation class CharactorFilter
*/
@WebFilter("/CharactorFilter")
public class CharactorFilter implements Filter {
//字符串编码
String encoding = null;
public CharactorFilter() { } /**
* @see Filter#destroy()
*/
public void destroy() {
encoding = null;
} /**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//判断字符编码是否为空
if(encoding != null) {
//设置request的编码方式
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setCharacterEncoding(encoding);
response.setContentType("text/html;charset"+encoding);
} chain.doFilter(request, response);
} /**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
encoding = fConfig.getInitParameter("encoding");//初始化字符过滤器,getInitParameter("encoding")中的encoding为配置在web.xml文件中的参数
} }

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

 <filter>
<!--过滤器类名,必须和后台过滤器类名保持一致-->
<filter-name>CharactorFilter</filter-name>
<!--过滤器完整类名-->
<filter-class>com.filter.CharactorFilter</filter-class>
<!--开始配置初始化参数-->
<init-param>
<!--参数名称-->
<param-name>encoding</param-name>
<!--参数值-->
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!--开始配置过滤器映射-->
<filter-mapping>
<!--过滤器名称-->
<filter-name>CharactorFilter</filter-name>
<映射到作用的url, /*表示作用到所有文件>
<url-pattern>/*</url-pattern>
</filter-mapping>

最后运行得到如下结果

JDBC数据库之添加数据的更多相关文章

  1. Eclipse中java向数据库中添加数据,更新数据,删除数据

    前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...

  2. 用PHP向数据库中添加数据

    显示页面(用户可见) <body><form action="chuli.php" method="post">  //将该页面接收的数 ...

  3. 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因

    1:  在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...

  4. phpStudy3——往数据库中添加数据

    前言: 前边介绍了查询数据库的方法,这里介绍下往数据库中添加数据的方法. 项目需求: 用户在前端页面输入的用户名和手机号码,点击提交后后端判断手机号码是否已经存在.如果不存在,那么插入数据库到数据库, ...

  5. 在数据库中添加数据以后,使用Mybatis进行查询结果为空

    在数据库中添加数据以后,使用Mybatis进行查询结果为空,这是因为数据库中添加数据忘记commit的缘故.

  6. SqlServer 查看数据库、添加数据文件

    一.查看SqlServer实例的数据库列表 1).直接在SSMS(SqlServer Management Studio)管理工具里面 展开实例下面的所有数据库便可查看  2).使用Transact- ...

  7. JDBC连接mysql数据库,添加数据

    如下:其中添加/删除/修改只是sql字符串不同 //3.要执行的字符串 String sql="INSERT INTO t_student(NAME,age,email) VALUES('x ...

  8. MVC学习笔记(三)—用EF向数据库中添加数据

    1.在EFDemo文件夹中添加Controllers文件夹(用的是上一篇MVC学习笔记(二)—用EF创建数据库中的项目) 2.在Controllers文件夹下添加一个空的控制器(StudentsCon ...

  9. nhibernate操作sql2008数据库(添加数据失败)

    今天遇到一错误困了我一天,如此痛恨,遂记录于此: nhibernate框架+MVC模式搭的项目,添加数据时报错: "could not insert: [KXRMallManage.Mode ...

随机推荐

  1. 转:每天一个linux命令(1):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  2. Java中面向字符的输入流

    Java中面向字符的输入流 2016-12-04 Java程序员联盟 Java程序员联盟 Java程序员联盟 微信号 javalm 功能介绍 莫道君行早,更有早行人 全心敲代码,天道自酬勤 字符流是针 ...

  3. lnmp架构(第一篇)

    lnmp 架构 第一篇 nginx 源码安装 nginx的安装包:nginx-1.12.0.tar.gz 建议安装前的修改: 在nginx的解压包中修改文件nginx-1.12.0/src/core/ ...

  4. 在JS事件封装时,addEventListener()方法的this问题

    最近在写js的类库,模仿的是jquery的编程风格,当封装到事件监听的时候发现遇到了一个问题,代码是这样的: 上面是封装的一个事件委托的代码,我以为上面的封装跟普通的事件监听一样简单,结果我在调用时发 ...

  5. C++ 用lambda代替 unique_ptr 的Deleter

    C++ 用lambda代替 unique_ptr 的Deleter 代码 #include <iostream> #include <cstdlib> #include < ...

  6. ASP.NET Core 运行原理解剖[5]:Authentication

    在现代应用程序中,认证已不再是简单的将用户凭证保存在浏览器中,而要适应多种场景,如App,WebAPI,第三方登录等等.在 ASP.NET 4.x 时代的Windows认证和Forms认证已无法满足现 ...

  7. kindeditor上传图片时候,上传成功了,但是页面上却提示失败

    今天尝试着kindeditor做一个上传demo,碰到了一个日狗的问题,百度谷歌都没有答案,最后查看源码才发现问题所在,记录一下,福利大众. 碰到问题如下,图片后台明明上传成功了,返回信息也是正确的, ...

  8. 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现

      本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是 ...

  9. liunx下常见的命令汇总

    前言:这篇文章对于工作多年的可能用处不大,但对于刚刚接触Java的同学肯定是有一些帮助,现在我总结我接触liunx后常见的一些命令 1:日志查询常用的命令 ll:查询目录下所有的文件 ls -lht: ...

  10. jQuery中getJSON跨域原理详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp28 jQuery中getJSON跨域原理详解 前几天我再开发一个叫 河蟹工 ...