日期:2014-05-17  浏览次数:20722 次

求高手看一下代码,指点一下。
<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<%


//request.setCharacterEncoding("gb2312");
String name=(String)request.getParameter("Username");
String password=(String)request.getParameter("Password");
String email=(String)request.getParameter("Email");
String birthday=(String)request.getParameter("byear"+"-"+"bmonth"+"-"+"bday");
String sex=(String)request.getParameter("Sex");
String address=(String)request.getParameter("province"+"city");
String icon=(String)request.getParameter("Usericon");

Connection conn=null;
PreparedStatement stmt=null;
try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/weibo","root","");
stmt=conn.prepareStatement("INSERT INTO userinfo(Username,Password,Email,Birthday,Sex,Address,Usericon)"+"VALUES(?,?,?,?,?,?,?)");
stmt.setString(1,name);
stmt.setString(2,password);
stmt.setString(3,email);
stmt.setString(4,birthday);
stmt.setString(5,sex);
stmt.setString(6,address);
  stmt.setString(7,icon);
stmt.executeUpdate();
  out.println("操作成功");
response.sendRedirect("success.jsp");
}
catch(java.sql.SQLException e){
out.println(e.toString());
}
finally{
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
}
%>

</body>
</html>

就是注册页,想数据库中写入数据的,但是却一直提示com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'Username' cannot be null,水平有限,实在弄不明为什么,希望知道的人能够说一下,谢谢了。

------解决方案--------------------
1、你把sql语句打印出来看一些会不会错了;
2、表里面是否有其它外键关联;
3、接收过来的数据得先判断一些是否有空值,没有的情况下再插入数据库。
------解决方案--------------------
username是不是没有获取到值,提示的信息是username不能为空,调试一下看看


------解决方案--------------------
"INSERT INTO userinf(Username,Password,Email,Birthday,Sex,Address,Usericon)VALUES(?,?,?,?,?,?,?)";
你把sql语句 换成这个 试试
String name=(String)request.getParameter("Username");
 这个name 貌似是空? 另外一个页面上Username 是否有值。。。。
------解决方案--------------------
uname不能为空 (String)request.getParameter("Username");这行代码没有获取到值 检查html <input>的name是否和Username相同