gpt4 book ai didi

java - 如何在数据库中搜索列以匹配用户输入

转载 作者:行者123 更新时间:2023-12-02 11:18:56 25 4
gpt4 key购买 nike

我正在尝试查询 postgresql 数据库以检查与用户输入的内容是否匹配。例如,如果用户输入用户名“user1”,我想在数据库的用户表中搜索用户名列以查找与该用户名匹配的用户名。

我的数据库集合有效,并且在使用查询时(从用户中选择*;)我得到了控制台中显示的正确信息。当我在 PGAdmin 或终端中运行以下查询时,我得到了正确的结果(从用户名 = 'user1' 的用户中选择用户名;)。

  • 在java应用程序中,User.getUserName()是一个getter,当提示用户在帐户注册页面上输入用户名时,它返回应用程序设置的用户名。

代码如下:

public static void isUniqueUser(String userName) {
try {
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/bigday", "postgres", "admin");
PreparedStatement stmt = con.prepareStatement("select from users where username = " + User.getUserName());
ResultSet rs = stmt.executeQuery();
//if name found in db prompt name already taken
while(rs.next()) {
System.out.println("User Name: " + rs.getString(1) + "Password: "
+ rs.getString(2) + "Email: " + rs.getString(3) + "Phone: " + rs.getString(4));
}

}catch (Exception ex) {
System.out.println(ex.getMessage());
}
}

当我在 Eclipse 中运行查询时,控制台返回的结果是:

错误:列“user1”不存在 位置:36

最佳答案

您需要引用String(使用'字符),或者更好使用绑定(bind)参数。并指定一些列(或使用 splat, *)。就像,

PreparedStatement stmt = con.prepareStatement("select * from users where username = ?");
stmt.setString(1, User.getUserName());
ResultSet rs = stmt.executeQuery();

关于java - 如何在数据库中搜索列以匹配用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50071741/

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