如何在JAVA程序中从mySQL中根据用户名(VARCHAR)检索用户ID(INT)



因此,我正在使用JAVAmySQL制作一个登录系统。我想检索userID(int数据类型(的值,这取决于用户名的值(字符串数据类型(。

有人能给我一个如何解决这个问题的主意吗,谢谢。

这是我的表(logindb(结构:

  1. 用户名--VARCHAR(20(
  2. 名字——VARCHAR(20(
  3. 姓氏--VARCHAR(20(
  4. userID--INT(5(
public class LoginFrame extends javax.swing.JFrame {

String username;
Connection connectDB = null;
PreparedStatement statementDB = null;
private void buttonLoginActionPerformed(java.awt.event.ActionEvent evt) {                                                          
// TODO add your handling code here:      

try{
connectDB = DriverManager.getConnection("jdbc:mysql://localhost/fyploginsystemdb", "root", "");
String query = "SELECT `userID` FROM `logindb` WHERE username ='"+username+"'";               
statementDB = connectDB.prepareStatement(query);

}catch(Exception ex){
//stuff 
}

}       
} 
}

您需要阅读一些教程,下面的代码块可以作为您的参考,有两点需要注意:

  1. 使用PreparedStatement来避免sql注入,在这种情况下,您需要通过?传递参数
  2. 如果您的jdk高于jdk6,则使用try-with-resource以确保它们可以自动关闭
public class LoginFrame extends javax.swing.JFrame {
String username;
private void buttonLoginActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String query = "SELECT `userID` FROM `logindb` WHERE username = ? ";
try (Connection connectDB = DriverManager.getConnection("jdbc:mysql://localhost/fyploginsystemdb", "root", "");
PreparedStatement statementDB = connectDB.prepareStatement(query);) {
statementDB.setString(1, username);
try (ResultSet resultSet = statementDB.executeQuery()) {
while (resultSet.next()) {
System.out.println(resultSet.getInt("userID"));
}
}
} catch (Exception ex) {
//stuff
}
}
}

最新更新