需要有关此Java项目的帮助

时间:2014-04-20 17:21:34

标签: java netbeans jdbc sql-server-2012

我正在使用sql server 2012,我正在做一个允许用户注册和登录的java程序。但是,在用户登录或注册后,他们应该能够向表中添加更多信息。但我一直得到一个空值。 我的表有4个字段...用户名(主键),密码,电子邮件,个人信息。 我希望用户能够在登录或注册后添加到个人信息字段

//adding a user
public void addUser(User user)
{
   try{
       makeConnection();
       Statement s = con.createStatement();
      s.execute("INSERT INTO Person VALUES('"+user.getUserName()+"','"+user.getPassword()+"','"+user.getEmail()+"','"+user.getSlang()+"')");

   }
   catch(SQLException ex){
   xc=false;

       JOptionPane.showMessageDialog(null,"The LoginID  & or email already exists, \n please type a different loginID and password",
               "Error",JOptionPane.ERROR_MESSAGE);
       //System.out.println("Error.......");
       ex.printStackTrace();
   }
 }

这是我在Sql中的表 创建表人 (     loginID varchar(30)主键不为null,     password varchar(15),     email varchar(30)unique,     俚语varchar(128),     / 定义varchar(200) / ) 在用户登录或登录后,我的gui转到另一个框架,允许用户输入一些我想要添加到俚语列的更多信息,但我一直变为空。是否可以从null更新它。

public void addInfo(User info) {

     try{
         makeConnection();
         Statement s = con.createStatement();
         String sp = ("UPDATE Person SET Slang = '"+info.getSlang()+"' where loginID='"+info.getUserName()+"' ");

       s.executeUpdate(sp);
     }
     catch(SQLException ex){
         xc = false;
           JOptionPane.showMessageDialog(null,"Slang already added, \n please type a different loginID and password",
               "Error",JOptionPane.ERROR_MESSAGE);
            //System.out.println("Error.......");
           ex.printStackTrace();
     }
 }  

1 个答案:

答案 0 :(得分:0)

首先使用PreparedStatement的强制性建议。它正确地转义单引号和其他特殊字符,并阻止SQL injection

    String sql = "INSERT INTO Person (loginID, password, email)"             
            + " VALUES(?, ?, ?)";
    try (PreparedStatement s = con.prepareStatement(sql)) {
        s.setString(1, user.getUserName());
        s.setString(2, user.getPassword());
        s.setString(3, user.getEmail());
        int updateCount = s.executeUpdate();
    }

该语句应该关闭,为此可以使用try-with-resources语法,始终关闭。如果插入记录,updateCount应为1。

错误;如果枚举列名,则代码不会在将来的表更改时立即中断,但也可能保留空字段(一般情况下,如果列没有约束NOT NULL,则可填写null。)

但是你似乎在说,UPDATE给出了一个与NULL相关的错误。在这种情况下,它只能是User info包含null。也许您可以提供更详细的错误消息。或追踪价值;信息和他们的领域。我们现在可以告诉他们,连连接都可能是罪魁祸首。