gpt4 book ai didi

java - 50894 读取错误 : Incorrect syntax near the keyword 'user' when tries to select query to compare the username and password

转载 作者:行者123 更新时间:2023-12-01 18:27:24 24 4
gpt4 key购买 nike

  public void login(String name,String password) throws SQLException{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(SocketServer.class.getName()).log(Level.SEVERE, null, ex);
}
java.sql.Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;"+"user=looi963;password=1234;database=user");
PreparedStatement state=conn.prepareStatement("Select username,password from user where username=? and password = ?");
state.setString(1,name);
state.setString(2, password );
int count = state.executeUpdate();
if(count>0){
System.out.println("Successful login");
}
}

最佳答案

将标识符保护为 USER is a reserved keyword并且它不能“裸”使用。考虑以下使用 []-引号(""-quotes 也可以);

Select username,password from [user] where username = ? and password = ?

此错误相当常见(对于不同的保留字) - 请务必查阅手册。理想情况下,我会对表和列进行命名,使其包含任何保留关键字。

<小时/>

此外,将 executeUpdate() 更改为 executeQuery()因为这是一个 SELECT 操作。

明智的做法是切换到不存储纯文本密码的用户表。纯文本密码的问题有两个;

  • 对表进行未经授权的读取会立即危及所有帐户,并且;
  • 人们经常重复使用密码,这可能会使他们的其他帐户(例如电子邮件、银行)容易受到攻击。

关于java - 50894 读取错误 : Incorrect syntax near the keyword 'user' when tries to select query to compare the username and password,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com