我正在尝试查询postgresql数据库以检查用户输入的匹配项。例如,如果用户输入用户名' user1',我想搜索数据库的users表中的username列以查找与用户名的匹配项。
我的数据库集合有效,并且在使用查询时(从用户中选择*),我将获得控制台中显示的正确信息。当我在PGAdmin或终端中运行以下查询时,我得到了正确的结果(从用户名=' user1&#39 ;;)中选择用户名。
代码如下:
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
答案 0 :(得分:1)
您需要引用String
(带'
个字符),或更好使用绑定参数。并指定一些列(或使用splat,*
)。像,
PreparedStatement stmt = con.prepareStatement("select * from users where username = ?");
stmt.setString(1, User.getUserName());
ResultSet rs = stmt.executeQuery();