首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException

2011-11-15 
高手看一下这个报错的问题先说一下,我的代码是对数据库的增删改查,但是只要运行就会自动添加一个全部是NUL

高手看一下这个报错的问题
先说一下,我的代码是对数据库的增删改查,但是只要运行就会自动添加一个全部是NULL的数据,请高手指点一下。先看一下报错的。

Java code
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'null' for key 1    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)    at com.mysql.jdbc.Util.getInstance(Util.java:386)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1709)    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1628)    at test.DBBean.update(DBBean.java:44)    at org.apache.jsp.mainpage_jsp._jspService(mainpage_jsp.java:116)    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)    at java.lang.Thread.run(Thread.java:662)


[解决办法]
看看你的 myDBbean.update(String) 方法 的代码。

另:乱码:jsp页面加这个试试
<%@ page language="java" 
contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
或者:
仔细比较你的添加和修改的差异处,看看是哪部分造成的乱码。
[解决办法]
乱码问题,首先看下你数据库用的是什么字符集,MySQL安装时字符集默认是latin-1,你要是没有更改字符集,那么插入中文时肯定是乱码。查看下你的字符集可以输入
>show variable like 'character%'
更改字符集的方式,直接打开MySQL安装目录,找到其中的my.ini文件,将全部的default-character-set内容修改,如下所示:default-character-set=gbk
修改完,将MySQL数据重启下就OK。
楼主也要在页头加上<% contentType="text/html; charset=utf-8"
pageEncoding="utf-8" %>。


楼主你的异常信息
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
说明你SQL语句有问题
num是什么?主键吗?如果主键是自动增长,则不需要写num的
[解决办法]
报错,主键空,再检查吧

关于乱码问题:统一jsp,数据库的编码方式就可以解决了

热点排行