java - 如何在 JAVA 程序中根据用户名(VARCHAR)从 mySQL 检索用户 ID(INT)?
问题描述
所以,我正在使用JAVA和mySQL制作登录系统。我想根据用户名(字符串数据类型)检索userID(int 数据类型)的值。
谁能给我一个关于如何解决这个问题的想法,谢谢。
这是我的表(logindb)结构:
- 用户名 -- VARCHAR(20)
- 名字——VARCHAR(20)
- 姓氏 -- VARCHAR(20)
- 用户 ID -- 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注入,在这种情况下你需要通过传递参数?
- 使用
try-with-resource
如果您的 jdk 高于 jdk6 以确保它们可以自动关闭
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
}
}
}
推荐阅读
- python - Python Beautiful Soup 返回无类型
- javascript - 为什么在这个笑话测试中它的功能顺序很重要?
- python - 如何在 Python 中通过重复获得每个 6 元素排列?
- svg - 使用 animateTransform 为 SVG 设置动画
- reactjs - 只有当它们的依赖项是状态的一部分时,memoized 回调才会改变?
- java - 是否可以在 AnyLogic 中调用嵌入块的函数?
- python - 如何通过目录传递pygame图标?
- cmder - 在 Cmder 中选择和删除文本
- node.js - 使用未使用的导入进行 Webpack 树抖动
- flutter - 自定义浏览量 Flutter