1

我正在尝试在 java 中创建一个简单的注册表单。我在 sql 中创建了一个表,其中我选择了不允许空值,但是当我在没有输入任何值的情况下注册时,没有给出任何异常......所有空值都被排除在外......!!我应该怎么办?

private void b1ActionPerformed(java.awt.event.ActionEventevt)                          {                                   
try{


        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("jdbc:odbc:mydsn1");
        PreparedStatement pstmt= con.prepareStatement("insert into project.dbo.signup values(?,?,?,?,?,?)");

        pstmt.setString(1,t1.getText());
        pstmt.setString(2,t2.getText());
        pstmt.setString(3,String.valueOf(t3.getText()));
        pstmt.setString(4,t4.getText());
        pstmt.setString(5,t5.getText());
        pstmt.setString(6,c1.getSelectedItem().toString());

        pstmt.executeUpdate();

    }

    catch(SQLException e)
    {
        JOptionPane.showMessageDialog(null,e.toString());           
    }
      catch(Exception ob)

    {

        JOptionPane.showMessageDialog(null,ob.toString());
    }

}                                   
4

3 回答 3

1

Null并且empty不一样。如果将列值设置为,not null则不能插入任何值,null或者必须输入值。但这并不意味着您不能输入空字符串..

空字符串示例

String s = null;
String s = "";

因此,在您的情况下,当您没有在 TextBox 中插入任何输入并使用getText()它获取值时,将返回一个不为空的空字符串。我希望你明白其中的区别

所以有一个例外你可以做一件事。检查输入字符串,如果长度为 0,则不要插入它,或者在那里插入一个空值,例如

String s = t1.getText();
if(s.length() == 0)
    pstmt.setString(1, null);  // or dont insert
于 2013-06-22T06:07:14.270 回答
0

getText() method, infact, never return null. It returns CharSequence whose contents may be empty.

Instead of doing getText().toString().equals("") or vice-versa, it may be faster to do getText().length() == 0

于 2013-06-22T06:16:37.007 回答
0

t1.getText()返回空值""不为空。为此,您需要检查空值,例如

"".equals(t1.getText())
于 2013-06-22T06:10:46.630 回答