所以,对于一个学校项目,我正在构建一个discord机器人。我内置的一个特性是,他可以从mysql数据库中检索gif链接,并以消息的形式发送它们。现在,我的问题是我只能从数据库中检索一条记录,而不能检索其他记录。如果我将使用的查询放入mysql工作台并运行它,它将检索这些记录。
这是检索gif的方法
public static ArrayList<Gif> GetGifsFromDB(String msg){
ArrayList<Gif> gifs = new ArrayList<>();
try(Connection conn = (Connection)DriverManager.getConnection(url, userName, password)){
Class.forName("com.mysql.jdbc.Driver").newInstance();
Statement stmnt = conn.createStatement();
String sql = "Select * from gif WHERE Type = '" + msg + "'";
stmnt.execute(sql);
try(ResultSet rs = stmnt.getResultSet()){
while(rs.next()){
Gif g = new Gif();
g.setID(rs.getInt("GifID"));
g.setURL(rs.getString("GifURL"));
System.out.println(g.getID() + g.getURL());
gifs.add(g);
}
rs.close();
conn.close();
}
}
catch(SQLException ex){
System.err.println(ex.getMessage());
}
catch(Exception ex){
System.err.println(ex.getMessage());
}
return gifs;
}
数据库中的“type”只是一个类别。有了我的测试数据,这三种类型是没有,惊讶和孤独。只有no返回gif。
3条答案
按热度按时间fkvaft9z1#
问题是mysql没有将记录提交到数据库。一旦workbench被刷新,添加的记录就会消失。奇怪的是,即使这些记录不在数据库中,它们也可以被检索。
xtfmy6hx2#
很可能是你的
msg
与数据库的任何值都不完全匹配Type
列。运行测试
直接在数据库上手动执行此操作。
您还可以尝试将以下代码行放在末尾:
如果其中任何一个结果为零,那么这意味着
msg
不完全匹配Type
. 可能是大小写问题?另外,为了避免sql注入和其他问题,请强烈考虑使用
PreparedStatement
.wswtfjt73#
删除关闭结果集和连接行:
您已经在使用try with resources关闭它