注册 登录
编程论坛 J2EE论坛

无法将 NULL 值插入列 'E_mail',表 'friend.dbo.userInfor';该列不允许空值。INSERT 失败。

Ethip 发布于 2008-04-02 16:26, 2363 次点击
我在用JSP+JavaBean做一个网页注册页面。遇到问题,请教各位强人!

执行预处理插入语句state.executeUpdate();时,不能通过!
错误提示如题目!数据表userInfor(在数据库friend中)的E_mail列并没有设置为允许为空,
且能够执行到state.setString(4, regInfor.getE_mail());这里,下面就错误提示如题目了!!!

不知道是什么原因??
5 回复
#2
witer2008-04-02 17:24
所要插入的数据不能正确的插入,说明你的JSP变量不能正确的传到JAVABEAN
#3
Ethip2008-04-02 18:56
回复 2# 的帖子
经过了在不同的地方设置的测试,确实是JSP中的变量没有传到JavaBean里!
谢谢!!!
#4
vking6612008-04-03 09:35
且能够执行到state.setString(4, regInfor.getE_mail());中有没有值啊,
#5
Ethip2008-04-03 10:58
回复 4# 的帖子
没有值!
#6
Ethip2008-04-03 11:16
知道错误在那里了!!
后来经朋友的帮忙,才发现是我把设置setProperty标签属性值的三种语法格式搞混淆了!书上有啊,我都没有看仔细,哎!!!

下面缉拿但说下设置setProperty标签属性值的三种语法格式

设置setProerty标签属性的三种语法格式比较
1.通过表达式或字符串设置
<jsp:setProperty name="beanName" Property="PropertyName" value="<%=exprossion%>|字符串" />
注意:value的值就是传到JavaBean里面的值了,相当于直接给对应的JavaBean中的属性“赋值”。另

外若是<%=exprossion%>的话,还是可以接受表单中提交的值的。

2.通过HTTP表单的参数值设置
<jsp:setProperty name="beanName" property="*" />
注意:这里用*,表示不再具体指定JavaBean属性的值将对应表单中的哪个参数,系统会自动根据和名

字进行匹配,但呀十分注意的是,表单中参数的名字必须和JavaBean中的属性名字完全相同。
这样做的好处显而易见,当表单中要提交的参数过多时,可以简化代码。
另外,不要*的话,可以用<jsp:setProperty name="beanName" property="PropertyName"

param="paramName" />

3.通过内置对象request提取的参数设置
<jsp:setProperty name="beanName" property="PropertyName" param="paramName" />
注意:这样做的缺点是,增添了很多冗余的代码。既要用request.getParameter("PropertyName")提取

表单中的参数,又要一个一个的setProperty。

建议表达中参数过多时,采用第二种方法设置setProerty属性的值!!
1