我没有插入null到表中,但为什么老是报插入null值的错

zhouyan_520 2015-04-16 03:27:46
我进行注册的时候,数据无法添加到数据库,老是报插入null值的错

[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]不能将值 NULL 插入列 'usersName',表 'FlowerShop.dbo.users';列不允许有 Null 值。INSERT 失败。

表单信息如下:
<FORM name=userinfo ACTION="addUserInfo.jsp" method="post">
<TABLE height=321 cellSpacing=1 cellPadding=2 width="812"
align=center border=0>
<TBODY>
<TR bgColor=#a4ffb8>
<TD colSpan=2>
<DIV align=left>
<FONT color=#4ea3a5><B> </B> </FONT><B><SPAN class=style3>会员注册</SPAN>
</B>
</DIV>
</TD>
</TR>
<TR bgColor=#fcfcfc>
<TD width="24%">
<div align="center">
<FONT color=#cb6f00>用 户 名:</FONT>
</div></TD>
<TD width="76%"><div align="left">
<INPUT id=usersName
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
maxLength=20 name=usersName;> <FONT color=red>*</FONT>中文或英文,请勿有空格
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>密 码:</FONT><FONT color=#cb6f00> </FONT>
</div></TD>
<TD><div align="left">
<FONT color=#cb6f00> <INPUT id=usersPass
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
type=password maxLength=20 name=usersPass;> <FONT
color=red>*</FONT> </FONT>长度必须大于6个字符小于20个字符
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>确认密码: </FONT>
</div></TD>
<TD><div align="left">
<FONT color=#cb6f00> <INPUT id=usersRePass
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
type=password maxLength=20 name=usersRePass;> <FONT
color=red>*</FONT> </FONT>请再次输入密码,以免设置密码出错
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>密码提问:</FONT>
</div></TD>
<TD><div align="left">
<INPUT id=usersPassQuestion
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
name=usersPassQuestion;> 用于密码遗忘时使用,可不填
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>密码答案:</FONT>
</div></TD>
<TD><div align="left">
<INPUT id=usersPassReply
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
name=usersPassReply;> 可不填
</div></TD>
</TR>
<TR bgColor=#a4ffb8>
<TD colSpan=2>
<P>
<FONT color=#4ea3a5><B class=efont> </B> </FONT><B
class=efont><SPAN class=style3>请填写您的个人信息</SPAN> </B><BR>
</P></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD width="24%">
<div align="center">
<FONT color=#cb6f00>真实姓名: </FONT>
</div></TD>
<TD width="76%"><div align="left">
<FONT color=#cb6f00> <INPUT id=usersTrueName
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
name=usersTrueName;> </FONT><FONT color=red>*</FONT>
送花时我们将向接收人说明
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>联系地址:</FONT>
</div></TD>
<TD><div align="left">
<INPUT id=usersAddress
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
size=30 name=usersAddress;> <FONT color=red>*</FONT>
可简单填写,比如安徽.合肥
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>联系电话:</FONT>
</div></TD>
<TD><div align="left">
<INPUT id=usersPhone
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
name=usersPhone;> <FONT color=red>*</FONT>
很重要,请一定正确填写
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD>
<div align="center">
<FONT color=#cb6f00>电子邮件:</FONT>
</div></TD>
<TD><div align="left">
<INPUT id=usersE_mail
style="BORDER-RIGHT: #ffffff 1px groove; BORDER-TOP: #ffffff 1px groove; BORDER-LEFT: #ffffff 1px groove; COLOR: #333333; BORDER-BOTTOM: #ffffff 1px groove; HEIGHT: 18px; BACKGROUND-COLOR: #ffcc66"
name=usersE_mail;> <FONT color=red>*</FONT>
填写您的电子邮箱,方便联系(格式必须是 xxx@xxx.xxx 的形式)
</div></TD>
</TR>
<TR bgColor=#fcfcfc>
<TD align="center" colSpan=2><BR> <input
type="submit" value="提交信息" onClick="return checkuserinfo();">
(带<FONT color=red>*</FONT>为必填项)</TD>
</TR>
</TBODY>
</TABLE>
</FORM> <!-- 表单的结束 --></TD>
表结构是这样的:



这是表单提交到处理页面的代码

<%
try
{
userBean.setUserInfo(userClass);
userBean.addUserInfo();
}
catch(Exception e)
{
e.printStackTrace();
}
%>



public void setUserInfo(UserClass user) {
this.user = user;
}

// 定义向数据库中添加用户注册信息的方法
public void addUserInfo() {
try {
PreparedStatement stmt = conn
.prepareStatement("insert into users values(?,?,?,?,?,?,?,?,?)");

stmt.setString(1, user.getUsersName());
stmt.setString(2, user.getUsersPass());
stmt.setString(3, user.getUsersRePass());
stmt.setString(4, user.getUsersPassQuestion());
stmt.setString(5, user.getUsersPassReply());
stmt.setString(6, user.getUsersTrueName());
stmt.setString(7, user.getUsersAddress());
stmt.setString(8, user.getUsersPhone());
stmt.setString(9, user.getUsersE_mail());
ResultSet rs = stmt.executeQuery();

} catch (SQLException e) {
e.printStackTrace();
}
}
...全文
438 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yole 2015-05-25
  • 打赏
  • 举报
回复
有不为空的字段设置,而您插入的时候没有插入改字段对应的值。
ruzhong0906 2015-05-25
  • 打赏
  • 举报
回复
好长的报错代码。。我是没劲儿看这些。。反正我用finereport到现在还没遇到过这么复杂的报错,基本没什么错误发生。。
freecodex 2015-04-16
  • 打赏
  • 举报
回复
把断点打到这行:stmt.setString(1, user.getUsersName()); 看看 user.getUsersName()返回什么内容
freecodex 2015-04-16
  • 打赏
  • 举报
回复
另外,这个try块: try { PreparedStatement stmt = conn .prepareStatement("insert into users values(?,?,?,?,?,?,?,?,?)"); stmt.setString(1, user.getUsersName()); stmt.setString(2, user.getUsersPass()); stmt.setString(3, user.getUsersRePass()); stmt.setString(4, user.getUsersPassQuestion()); stmt.setString(5, user.getUsersPassReply()); stmt.setString(6, user.getUsersTrueName()); stmt.setString(7, user.getUsersAddress()); stmt.setString(8, user.getUsersPhone()); stmt.setString(9, user.getUsersE_mail()); ResultSet rs = stmt.executeQuery(); } 你至少要判断下吧,比如getUsersName(),getUsersPass()等,当拿到的返回类型为DB.NULL时,不应该执行executeQuery()这个方法。
xdashewan 2015-04-16
  • 打赏
  • 举报
回复
insert试着把字段列出来吧
freecodex 2015-04-16
  • 打赏
  • 举报
回复
这个问题很明显嘛 表设计中不允许usersname为null,插入nul当然要报错了

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧