在netbeans中执行sql查询后从结果集中获取数据

时间:2014-01-27 16:03:18

标签: sql netbeans-7

我在SQL中创建了一个带有字段用户名的表寄存器。在用户输入用户名的JFrame中,有一个用于检查用户名可用性的JButton。为此,我使用了以下代码:

String sqlstmt = "select username from register where username='" +
                 jTextField1.getText() + "'";

try {
  st = con.prepareStatement(sqlstmt);
  stmt = con.createStatement();
  rs = st.executeQuery(sqlstmt);

  if (rs.next()) {
    JOptionPane.showMessageDialog(null,"found");
  } else {
    JOptionPane.showMessageDialog(null,"not found");
  }
} catch(SQLException e) {
  JOptionPane.showMessageDialog(null,"sql error");    
}

执行此查询时,可以看到数据为空。或者,如果我将rs.getString("username")放在if (rs.next)内,则会显示“sql error”消息。

1 个答案:

答案 0 :(得分:0)

你在这里混合了StatementPreparedStatement。 这里最好的方法可能是使用PreparedStatement,它会处理输入中的任何时髦字符,并提供防止SQL注入的保护:

// SQL statement to prepare.
// Note the lack of single quotes  (') in the parameter
String sqlstmt= "select username from register where username = ?";

// Prepare the statement
PreparedStatement st = con.prepareStatement(sqlstmt);

// Bind the argument
st.setString(1, jTextField1.getText());

// Execute
ResultSet rs = st.executeQuery();

// Rest of the code to handle results...

注意:
此示例省略了错误处理(例如,try-catch构造),有利于清晰。