0

我正在尝试运行查询,但每当我运行时,我都会收到一条错误消息,提示“列地址不能为空”。

这是我的代码。

package com.rajesh.action;
import java.sql.*;
public class AccountDao {


public static int  save(Actionraju r){
int status =0;
Connection con=GetCon.getCon();
PreparedStatement ps;
try {
ps = con.prepareStatement("Insert into account (accountno, username, password,   repassword, amount, address, phone) values (?,?,?,?,?,?,?)");

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());
status=ps.executeUpdate();
}
catch(Exception e){
e.printStackTrace();}
return status;

}

}

我的 Actionraju.java 看起来像这样。

package com.rajesh.action;
public class Actionraju  {
private int accountno;

private String username;
private String password;
private String repassword;
private Double amount;
private String address;
private Double phone;



public int getAccountno() {
return accountno;
}


public void setAccountno(int accountno) {
this.accountno = accountno;
}


public Double getAmount() {
return amount;
}


public void setAmount(Double amount) {
this.amount = amount;
}


public Double getPhone() {
return phone;
}


public void setPhone(Double phone) {
this.phone = phone;
}


public String getUsername() {
return username;
}


public void setUsername(String username) {
this.username = username;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


public String getRepassword() {
return repassword;
}


public void setRepassword(String repassword) {
this.repassword = repassword;
}




public String getAddress() {
return address;
}


public void setAddress(String address) {
this.address = address;
}


public String execute(){

int i = AccountDao.save(this);
if(i>0){
return "success";
}
return "error";

}

}

在我的 mysql 数据库中,我有 7 列,即“accountno”、“username”、“password”、repassword”、“amount”、“address”、“phone”。对于所有这 7 列,我选中了“not null”框和这里我的“accountno”是主键。

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

4

3 回答 3

0

似乎 r.getAddress1() 为空,尝试传入一个常量字符串: ps.setString(6,r.getAddress1());

尝试将其更改为:

ps.setString(6,"SOME ADDRESS");

并查看错误是否仍然存在。

于 2013-05-23T06:21:52.940 回答
0

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

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

于 2013-05-23T06:00:45.927 回答
0

换行

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

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

然后它的作品....

于 2013-05-23T07:18:36.987 回答