如果SQL查询什么都不返回,rs.getString(1)将返回什么

时间:2014-07-17 00:42:33

标签: java 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.");
}

非常感谢。非常感谢。

3 个答案:

答案 0 :(得分:2)

在致电ResultSet#next()

之前,您忘记致电ResultSet#getString()

首先将光标移动到第一行,然后获取任何列的值。

我建议您使用PreparedStatment代替Statement

阅读Using Prepared StatementsWhen 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.");
}

答案 1 :(得分: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.");
   }
}
  

将光标从当前位置向前移动一行。一个   ResultSet游标最初位于第一行之前;该   首先调用方法接下来使第一行成为当前行;该   第二次调用使第二行成为当前行,依此类推。

您可以阅读结果集here

的下一个方法

答案 2 :(得分:0)

它会抛出异常,因为您无法调用ResultSet.next()。如果您已经调用它,它将返回false,您根本不应该调用rs.getString()