Java 我收到一个错误,上面写着“column”;地址;不能为空

Java 我收到一个错误,上面写着“column”;地址;不能为空,java,mysql,sql,struts2,mysql-error-1064,Java,Mysql,Sql,Struts2,Mysql Error 1064,我试图运行一个查询,但每当我运行时,我都会收到一个错误,提示“列地址不能为空” 这是我的密码 package com.rajesh.action; 导入java.sql.*; 公共类AccountDao{ 公共静态整数保存(Actionraju r){ int status=0; 连接con=GetCon.GetCon(); 编制报表; 试一试{ ps=con.prepareStatement(“插入账户(账号、用户名、密码、密码、金额、地址、电话)值(?,,,,,,,,?)”; ps.setI

我试图运行一个查询,但每当我运行时,我都会收到一个错误,提示“列地址不能为空”

这是我的密码

package com.rajesh.action;
导入java.sql.*;
公共类AccountDao{
公共静态整数保存(Actionraju r){
int status=0;
连接con=GetCon.GetCon();
编制报表;
试一试{
ps=con.prepareStatement(“插入账户(账号、用户名、密码、密码、金额、地址、电话)值(?,,,,,,,,?)”;
ps.setInt(1,r.getAccountno());
ps.setString(2,r.getUsername());
ps.setString(3,r.getPassword());
ps.setString(4,r.getRepassword());
ps.setDouble(5,r.getAmount());
ps.setString(6,r.getAddress1());
ps.setDouble(7,r.getPhone());
状态=ps.executeUpdate();
}
捕获(例外e){
e、 printStackTrace();}
返回状态;
}
}
我的Actionraju.java如下所示

package com.rajesh.action;
公共类诉讼{
私人国际帐户号码;
私有字符串用户名;
私有字符串密码;
私有字符串重密码;
私人双倍金额;
私有字符串地址;
私人双电话;
public int getAccountno(){
返回帐号;
}
公共无效setAccountno(int accountno){
this.accountno=accountno;
}
公共双getAmount(){
退货金额;
}
公共无效设置金额(双倍金额){
这个。金额=金额;
}
公用双getPhone(){
回电话;
}
公用设置电话(双电话){
this.phone=电话;
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共字符串getRepassword(){
返回密码;
}
公共void setRepassword(字符串repassword){
this.repassword=repassword;
}
公共字符串getAddress(){
回信地址;
}
公共无效设置地址(字符串地址){
this.address=地址;
}
公共字符串execute(){
inti=AccountDao.save(这个);
如果(i>0){
返回“成功”;
}
返回“错误”;
}
}
在我的mysql数据库中,我有7列,即“accountno”、“username”、“password”、“amount”、“address”、“phone”。对于所有这7列,我选中了“notnull”框,这里我的“accountno”是主键


请任何人帮我解决这个问题。我是一个新手。

我们没有足够的信息来确保我们在帮助你。但是这里有一些你可以做的事情来调试。执行
System.out.println(r.getAddress1())
。如果它打印空值,那就是您的问题。您创建表的方式表明地址不能为空,但您在代码中传递的是空值。请减少表的限制,或者确保传递值


另外,更改insert sql,使其显示如下内容:
insert into account(accountno,username,…)值(?,,,,,,,,,,?)
这样,您就知道您正在为地址字段设置正确的列。也许您认为6表示地址字段,但实际上它使用2表示地址字段。如果您编写sql以包含列名,则可以确定您正在执行您打算执行的操作。

似乎r.getAddress1()为空,请尝试在中传递常量字符串:
ps.setString(6,r.getAddress1());

尝试将其更改为:

ps.setString(6,"SOME ADDRESS");
然后查看错误是否仍然发生。

更换该行

ps.setString(6,r.getAddress1());


然后它就工作了。…

错误表明您正在为地址列插入一个空值。请尝试打印出您的地址值以进行检查。您确定
r.getAddress1()
不为空吗?是的,我已选中所有“不为空”“现在它给了我java.lang.NullPointerException。不知道我在做什么。@Rajesh在你的原始问题中向我们展示你的新代码,并向我们展示NullPointerException的整个错误。是的,鞠躬吧,tieTYT先生,你像我的小学老师一样向我解释,这样我就能够理解我做错了什么。现在我可以插入所有的值,但地址值显示为空,为什么即使在我在地址字段中输入了一些值后仍然如此?我伤害了你吗?对不起,我对你没有恶意(我已经做了ramesh,但它仍然显示为null。不知道出了什么问题。哦,一切都很完美,执行正确,这里没有给我任何错误,,@Rajesh。那么为什么我会这样做?在插入之前,只需使用“System.out.println();”打印每个值即可。)然后检查相应字段的大小、类型等,然后插入。如果仍然出现相同的错误,则给出静态值,如“ps.setString(6,“SOME ADDRESS”)如果你在这种情况下成功了,那么找出类型转换中的错误。我检查了,但地址显示为0,但其余的都是取值。酷…所以很明显,你的r对象在地址字段中没有任何值,并且正在传递null。你可以在r对象中填充一些值,或者将地址值设置为空字符串。类似于:if(r.getAddress1()==null){ps.setString(6,”;}else{ps.setString(6,r.getAddress1());}发现了一个错误..在我的jsp页面中,我用“adddresss”代替了“address”。现在我修复了它,所以我的问题得到了解决..感谢yash尝试帮助我..爱的负荷。。。
ps.setString(6,r.getAddress());