2013-06-22 91 views
1

我想在java中創建一個簡單的註冊表單。 我已經在SQL中創建了一個表,其中我已經選擇了不允許空值,但是當我註冊時沒有輸入任何值,沒有任何異常正在被給出....所有的空值都被排除在外。 我該怎麼辦?如何在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()); 
    } 

}         

回答

1

Nullempty不一樣的。如果您將列值設置爲not null,則不能插入任何null或者您必須輸入一個值。但是,這並不意味着你不能進入emptry串..

空和emptry串

String s = null; 
String s = ""; 

所以你的情況,當你不插入在文本框中任意輸入和獲取的例子值使用getText()它返回一個空字符串不爲null。我喜歡你瞭解差異

所以有一個例外,你可以做一件事。檢查輸入字符串,如果長度爲0,那麼不插入,或插入一個空值有像

String s = t1.getText(); 
if(s.length() == 0) 
    pstmt.setString(1, null); // or dont insert 
+0

那我應該怎麼imlement什麼我想要..? – user2509174

+0

嘗試我更新的答案 – stinepike

+0

有一個函數getSelectedItem爲textField ...它將返回一個空值的空文本域 – user2509174

0

t1.getText()返回空值""不爲空。對於您需要檢查空值像

"".equals(t1.getText()) 
+0

我是一個java的amatuer ...它不會是非常有用的,如果你üç編輯上面的代碼? – user2509174

+0

String text = t1.getText();文字= 「」。equels(文字)? null:text; pstm.setString(1,text); ///爲所有其他提交併分配給pstm。 – Masudul

+0

我wud必須做每個文本字段的代碼..!沒有任何緊湊的方法來做到這一點! – user2509174

0

的getText()方法,事實上,從來沒有返回null。它返回內容可能爲空的CharSequence。

而不是做的gettext的()。的toString()。等於( 「」),反之亦然,這可能會更快做的getText()。長度()== 0

+0

我wud必須做每個文本字段的代碼..!沒有任何緊湊的方法來做到這一點! – user2509174