因此,我正在使用JAVA和mySQL制作一个登录系统。我想检索userID(int数据类型(的值,这取决于用户名的值(字符串数据类型(。
有人能给我一个如何解决这个问题的主意吗,谢谢。
这是我的表(logindb(结构:
- 用户名--VARCHAR(20(
- 名字——VARCHAR(20(
- 姓氏--VARCHAR(20(
- 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
}
}
}
}
您需要阅读一些教程,下面的代码块可以作为您的参考,有两点需要注意:
- 使用
PreparedStatement
来避免sql注入,在这种情况下,您需要通过?
传递参数 - 如果您的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
}
}
}