基于servlet的 考勤管理系统 所遇到的问题

******************************************
(链接数据库时出现的问题)主键问题     com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '0' for key 1

解决:

Connection conn = DriverManager.getConnection(url, username, password);
		String sql = "insert into attendance(person,in_out,io_time) values(?,?,?)";
		
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setString(1, book.getPerson());
		ps.setString(2, book.getIn_out());
		ps.setTimestamp(3, Timestamp.valueOf(request.getParameter("Tio_time")));//-------------javabean 里头获取的是一个Timestamp,但是在html里头传递是是一个string所以不能用Timestamp接收
		int row = ps.executeUpdate();                                           //不能直接的接收,要间接的接收
		if(row>0){
			out.print("成功添加了 "+row + "条数据!");
		   
		   		}
		ps.close();
		conn.close();

       针对于 executeUpdate() 方法

没有自动跟新,会报出  Duplicate entry '0' for key 1 错误,因为这个错误是你在对数据库 增加数据的时候一直在对 同一个主键重复添加,所以他就会报出错误

create table attendance

(


A_id integer auto_increment,
person char(15),
in_out char(4),
-- 缺勤时间
io_time datetime,
primary key(A_id),
foreign key (person) references Person(person)
);

auto_increment 是将主键号自动递增
****************************************************
在网页中传输的是String 但是javabean接收的是 Timestamp
org.apache.jasper.JasperException: Unable to convert string
解决:
   在接收时,不要用javabean去接收
 <div id="apDiv1">	<form action="add_kq.jsp" method="post" οnsubmit=" return check(this)">
		<ul>
			<li>员 工  号     : <input type="text" name="person"/></li>
			<li>
			 
		  出入情况 : <input type="text" name="in_out"/></li>
			<li>出入时间 : <input type="text" name="Tio_time"/></li>   
			<li><input type="submit" value="添加"></li>
		</ul>
<li>出入时间 : <input type="text" name="Tio_time"/></li> 

注意:Tio_time

这个是为了区别 javabean里头 的那个 Timestamp 对象的实例


问题就是出在这一句,由于这个是我自己做的工程,所以要是看不懂的,可以跟我要工程的源码;

javabean

public class AttendanceBean {
	private int A_id;
	private String person;
	private String in_out;
	private Timestamp io_time;<span style="font-family: Arial, Helvetica, sans-serif;">}</span>

ps.setString(1, book.getPerson());
		ps.setString(2, book.getIn_out());
		ps.setTimestamp(3, Timestamp.valueOf(request.getParameter("Tio_time")));//-------------javabean 里头获取的是一个Timestamp,但是在html里头传递是是一个string所以不能用Timestamp接收
		int row = ps.executeUpdate();                                           //不能直接的接收,要间接的接收
注意这里头的区分




******************************************************
jsp下部署图片
<br><a href="${pageContext.request.contextPath }/main.jsp"> <返回></a>
	<div id="apDiv1"><img src="../Images/3.gif" width="612" height="80"><span style="font-family: Arial, Helvetica, sans-serif;"></div></span><span style="font-family: Arial, Helvetica, sans-serif;">这个里头要用 ../   来获取相对路径</span><span style="font-family: Arial, Helvetica, sans-serif;"><img src="../Images/3.gif"</span>


*****************************************************
在客户端从数据库获取 数据的时候:
一开始是在工程下直接获取数据,但是一直获取不出来
通过EL的相对路径来获取的话就可以 
加上这段代码<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
                这个是调用jstl库里头的EL
<td>●<a href=" ${pageContext.request.contextPath }/servlet/FindServlet">考勤修改窗体</td>


******************************************************
在通过servlet获取session的时候

先加载数据,才可以对数据进行操作

在客户端与服务器中,你要先去访问    查找 的那个servlet,再去执行操作才能获取到数据库;

先访问FindServlet  才能实现 UpdateServlet

这个是FindServlet里头重定向回去

// 请求转发到bookList.jsp
		request.getRequestDispatcher("/setTime.jsp").forward(request, response);


*****************************************************
jdbc链接数据库,从客户端获取数据,问题:在数据表中的数据中文出现乱码"??"
这个问题有三个方向入手  1:在创建数据库的时候,将编码设定为  utf8;

      2:在数据库表中的 字符集 是否为 utf8;

       

      3:String url = "jdbc:mysql://localhost:3306/db_kaoqin?characterEncoding=utf8";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值