0

クエリを実行しようとしていますが、実行するたびに「列アドレスを null にすることはできません」というエラーが表示されます。

ここに私のコードがあります。

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データベースには、「accountno」、「username」、「password」、「repassword」、「amount」、「address」、「phone」という7つの列があります。これらすべての7つの列について、「not null」ボックスをチェックし、ここで私の「accountno」は主キーです。

誰か私を助けてください。私は初心者です。

4

3 に答える 3

0

私たちがあなたを助けていることを確認するのに十分な情報がありません. ただし、デバッグのためにできることがいくつかあります。を行いますSystem.out.println(r.getAddress1())。null が出力される場合は、それが問題です。テーブルを作成した方法では、アドレスを null にすることはできませんが、コードで null 値を渡しています。テーブルの制限を緩和するか、値を渡すようにしてください。

また、insert sql を次のように変更します。 Insert into account (accountno, username, ...) values(?,?,?,?,?,?,?)これにより、住所フィールドに正しい列を設定していることがわかります。6 はアドレス フィールドを意味すると思うかもしれませんが、実際にはアドレス フィールドに 2 を使用しています。列名を含めるように SQL を記述すれば、意図したことを実行していることを確認できます。

于 2013-05-23T06:00:45.927 に答える