各位高手,求助,急!最近一直在做的东西,今天测试,JSP表单提交后,显示“成功提交”。可是进入SQL2000(SP3)打开表查看,加进去的记录却都显示为“NULL”。我试着把DB的一个字段(字段名:ID)改成“不可为空”,结果提交后报错:[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'ID',表 'aonuo.dbo.USERS';该列不允许空值。INSERT 失败。还有其他几个表单,提交后情况都是如此。求问各位高手,我该如何解决啊?我的系统是2003 Server的,不会是DB补丁的问题吧?先谢谢拉!----------------------------------------
相关代码如下:一、UsersRegist.java:package ..
import ..
public class UsersRegist
{
private Users users;
private Connection con;

//获得数据库连接。
public UsersRegist()
{
    this.con=DataBaseConnection.getConnection();
}

//设置待注册的用户信息。
public void setUsers(Users users)
{
this.users=users;
}

//进行注册
public void regist()throws Exception
{
String reg="insert into USERS (ID,PASSWORD,TYPE,NAME,SEX,OFFICE,LOGCOUNT,LASTLOGTIME) values (?,?,?,?,?,?,?,?)";

try
{
PreparedStatement pstmt=con.prepareStatement(reg);
pstmt.setString(1,users.getId());
pstmt.setString(2,users.getPassword());
pstmt.setInt(3,0);
pstmt.setString(4,users.getName());
pstmt.setString(5,users.getSex());
pstmt.setString(6,users.getOffice());
pstmt.setInt(7,0);
pstmt.setDate(8,new java.sql.Date(new java.util.Date().getTime()));
pstmt.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
}
}------------------------------
二、Users.java:包含了get和set方法。------------------------------
三、获取参数的JSP:......
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>注册成功!</title></head><jsp:useBean id="users" class="web.Users" scope="page">
<jsp:setProperty name="users" property="*"/>
</jsp:useBean>
<jsp:useBean id="usersregist" class="web.UsersRegist" scope="page"/><body>
<%
  usersregist.setUsers(users);
  usersregist.regist();
  out.println("注册成功!");%>
<p><a href="main.jsp">返回</a> </p>
</body>
......

解决方案 »

  1.   

    在执行
    pstmt.setString(1,users.getId());
    pstmt.setString(2,users.getPassword());
    的时候,users的成员变量是正确的吗,System.out.print看看
    可能request参数名错误得到null吧如果一切正常,那就是驱动问题了
    关注一下
      

  2.   

    哥们儿,你是用jdbcodbc做驱动吧,其实使用jdbcodbc驱动连接sql server 2000有问题,比如不能重复读和必须按顺序读,建议你或者是换数据库(mysql最好)或者是换微软开发的jdbc驱动.有人说是微软故意这样的,天知道,呵呵
      

  3.   

    [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法将 NULL 值插入列 'ID',表 'aonuo.dbo.USERS';该列不允许空值。INSERT 失败@^@ 不能插入null;你插入的数据有空的!
      

  4.   

    可能你的ID用的是自动编号递增的,那你在插入记录时就不能给它赋值,它是由DBMS自动管理的,把对ID的插入操作删掉