2014-07-17 77 views
1

繼承人我的代碼:用於連接數據庫會有什麼rs.getString(1)返回如果SQL查詢不返回任何

代碼:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=city_mart;user=sa;password=aptech"); 
Statement st=con.createStatement(); 

String sql="Select Emp_login_ID from employee where Emp_login_ID = '"+r3.getText()+"' "; 
ResultSet rs=st.executeQuery(sql); 

String login = rs.getString(1); 

if (r3.getText().equalsIgnoreCase(login)) 
{ 
    JOptionPane.showMessageDialog(rootPane, "Login ID not available."); 
} 
else 
{ 
    JOptionPane.showMessageDialog(rootPane, "Login ID is available."); 
} 

thanks.any幫助深表感謝。

+1

自2007年以來,Class.forName()行一直是不必要的。 – EJP

回答

2

你已經忘記調用ResultSet#getString()

首先將光標放在任何列的第一行,然後獲得價值之前調用ResultSet#next()。我建議你使用PreparedStatment而不是Statement

Using Prepared Statements

閱讀教程和When we use PreparedStatement instead of Statement?

它應該是這樣的:(檢查()通過rs.next返回的值)

String sql="Select Emp_login_ID from employee where Emp_login_ID = ?"; 
PreparedStatement st = con.prepareStatement(sql); 
st.setString(1,r3.getText()); 

ResultSet rs=st.executeQuery(sql); 
if(rs.next()){ 
    String login = rs.getString(1); 
    JOptionPane.showMessageDialog(rootPane, "Login ID is available."); 
}else{ 
    JOptionPane.showMessageDialog(rootPane, "Login ID not available."); 
} 
+0

訪問[StackOverflow tour](http:// stackoverflow/tour) – Braj

0

你可以試試:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=city_mart;user=sa;password=aptech"); 
Statement st=con.createStatement(); 

String sql="Select Emp_login_ID from employee where Emp_login_ID = '"+r3.getText()+"' "; 
ResultSet rs=st.executeQuery(sql); 


while(rs.next()){ 
    String login = rs.getString(1); 
    if (r3.getText().equalsIgnoreCase(login)) 
    { 
    JOptionPane.showMessageDialog(rootPane, "Login ID not available."); 
    } 
    else 
    { 
    JOptionPane.showMessageDialog(rootPane, "Login ID is available."); 
    } 
} 

將光標從其當前位置移動一行位置。 A ResultSet光標最初位於第一行之前;首先調用下一個方法使第一行成爲當前行;第二次調用 使第二行成爲當前行,依此類推。

你可以閱讀設置here

+0

在查詢中使用單引號不是一種好方法。它不受所有數據庫的支持。 – Braj

+0

read [當我們使用PreparedStatement而不是Statement?](http://stackoverflow.com/questions/2099425/when-we-use-pre- paredstatement-instead-of-statement) – Braj

0

它會拋出一個異常,因爲你已經沒有打電話ResultSet.next()結果的一個方法。如果你打電話給它,它將返回false,你根本不應該叫rs.getString()

相關問題