JDBC数据库之添加数据
通过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数据库之添加数据的更多相关文章
- Eclipse中java向数据库中添加数据,更新数据,删除数据
前面详细写过如何连接数据库的具体操作,下面介绍向数据库中添加数据. 注意事项:如果参考下面代码,需要 改包名,数据库名,数据库账号,密码,和数据表(数据表里面的信息) package com.ning ...
- 用PHP向数据库中添加数据
显示页面(用户可见) <body><form action="chuli.php" method="post"> //将该页面接收的数 ...
- 向数据库中添加数据,通过se16 不能添加,通过 代码可以添加的原因
1: 在向数据库中添加数据时,通过客户端se16 准备对 数据表进行添加数据,提示如下: 找了以下原因,如下: https://www.baidu.com/link?url=3yRtAfY1_9XG ...
- phpStudy3——往数据库中添加数据
前言: 前边介绍了查询数据库的方法,这里介绍下往数据库中添加数据的方法. 项目需求: 用户在前端页面输入的用户名和手机号码,点击提交后后端判断手机号码是否已经存在.如果不存在,那么插入数据库到数据库, ...
- 在数据库中添加数据以后,使用Mybatis进行查询结果为空
在数据库中添加数据以后,使用Mybatis进行查询结果为空,这是因为数据库中添加数据忘记commit的缘故.
- SqlServer 查看数据库、添加数据文件
一.查看SqlServer实例的数据库列表 1).直接在SSMS(SqlServer Management Studio)管理工具里面 展开实例下面的所有数据库便可查看 2).使用Transact- ...
- JDBC连接mysql数据库,添加数据
如下:其中添加/删除/修改只是sql字符串不同 //3.要执行的字符串 String sql="INSERT INTO t_student(NAME,age,email) VALUES('x ...
- MVC学习笔记(三)—用EF向数据库中添加数据
1.在EFDemo文件夹中添加Controllers文件夹(用的是上一篇MVC学习笔记(二)—用EF创建数据库中的项目) 2.在Controllers文件夹下添加一个空的控制器(StudentsCon ...
- nhibernate操作sql2008数据库(添加数据失败)
今天遇到一错误困了我一天,如此痛恨,遂记录于此: nhibernate框架+MVC模式搭的项目,添加数据时报错: "could not insert: [KXRMallManage.Mode ...
随机推荐
- oracle多表连接查询竟然还有这种操作
仔细观察上面几个图,比较下 oracle数据库中的+操作符竟然可以替换left join 和right join sql server暂时没用到过
- CASE WHEN 及 SELECT CASE WHEN的用法(转)
Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- html canvas-nest.js 源码
// canvas_width || r.x canvas_height || r.y = e.max / 2 && (r.x -= 0.03 * x_dist, r.y -= 0.0 ...
- JVM堆内存设置
今天碰到了一个题目,讲的是关于堆内存的问题,题目如下 下面哪种情况会导致持久区jvm堆内存溢出? A.循环上万次的字符串处理 B.在一段代码内申请上百M甚至上G的内存 C.使用CGLib技术直接操 ...
- Akka(20): Stream:压力缓冲-Batching backpressure and buffering
akka-stream原则上是一种推式(push-model)的数据流.push-model和pull-model的区别在于它们解决问题倾向性:push模式面向高效的数据流下游(fast-downst ...
- React编写input组件传参共用onChange
之前写页面上的input比较少,所以没有单提出来一个组件,今天研究了下input组件,但共用一个onChange的问题卡了一会儿,查了下发现几个比较好的方法,分享下: 方法一 Input组件 let ...
- Andrew Ng机器学习课程笔记--week11(图像识别&总结划重点)
一.内容概要 Photo OCR Problem Decription and pipeline(问题描述和流程图) Sliding Windows(滑动窗口) Getting Lots of Dat ...
- 最大流isap模板
isap+bfs初始化+栈优化,点的编号从0开始: ; ; const int INF = 0x3f3f3f3f; struct Edge { int to, next, cap, flow; }ed ...
- 手把手封装数据层之DataUtil数据库操作的封装
上一篇我们写完了数据库连接的封装 没有看的请移步上一篇关于数据库连接的内容 这次我们讲数据库操作的封装.数据库的操作就是增删改查:心再大一点就可以直接分为查询和其他. 因为查询是有返回对象的,而其他都 ...
- WinFom解决最小化最大化后重绘窗口造成闪烁的问题
网上两种方案(可协同) 1 设置双缓冲: SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWm ...