我正在创建一个播放列表应用程序,我正在尝试使用HikariCP通过MySQL进行存储,我之前已经实现了SQLite并且它工作正常但是在将驱动程序实现更改为MySQL时,数据似乎并未存储。我已经尝试了多种方法来确定代码返回的内容,但我无法理解为什么数据没有被存储。
以下是数据库结构的create table语句:
CREATE TABLE IF NOT EXISTS playlists (playlist_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, playlist_name VARCHAR(32))
CREATE TABLE IF NOT EXISTS songs (song_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, artist_name VARCHAR(32), track_name VARCHAR(32), release_date VARCHAR(16), genre VARCHAR(16), album_name VARCHAR (32), youtube_url VARCHAR(2083), playlist VARCHAR (32))
将本地缓存卸载到数据库中的方法:
public static void offloadCache () {
for (Playlist p : playlists) {
storePlaylist(p);
for (Song s : p.getPlaylistList()) {
// Stores the song in the database
storeSong(s, p.getName());
}
}
}
使用该方法,如果我运行System.out.println(p.getName());对于播放列表的名称,它返回预期的名称。存储方法如下:
private static void storePlaylist (Playlist p) {
PreparedStatement ps = null;
Connection c = null;
try {
c = ds.getConnection();
ps = c.prepareStatement("INSERT INTO playlists (playlist_name) VALUES (?)");
ps.setString(1, p.getName());
ps.executeUpdate();
} catch (SQLException ignored) {
} finally {
if (ps != null) {
try {
ps.close();
} catch (SQLException ignored) {}
}
if (c != null) {
try {
c.close();
} catch (SQLException ignored) {}
}
}
}
我在该商店播放列表方法中放了多行进行调试,虽然在检查数据库时没有存储播放列表但是所有行都已到达,可能的问题是什么?这可能是一个小错误,我只是忽略了,因为它与SQLite驱动程序一起正常工作,现在不能使用MySQL驱动程序。