gpt4 book ai didi

java - SQLITE 更新性能不佳

转载 作者:行者123 更新时间:2023-12-02 04:33:12 26 4
gpt4 key购买 nike

我对SQL相当陌生(现在正在开发SQLITE应用程序),当我尝试这段代码时,它是我的应用程序中的一个部分:

public void addSong(LibrarySong song){

for(int i=0; i<intoPanel.getComponentCount(); i++) //Check if doublicates exist
if(song.getName().equals(intoPanel.getComponent(i).getName()))
return;


intoPanel.add(song);

//Add the song to the database table
try{
Container.DataBase.connection.prepareStatement("INSERT INTO '"
+ Container.libWindow.libInfoWindow.currentLib.getName()+ "'" //Table Name
+ " (PATH,STARS,DATE,HOUR) VALUES ('"
+ song.getName() + "'," + song.stars + ",'"
+ song.dateCreated + "','" + song.hourCreated + "')").executeUpdate();
}catch(SQLException sql){ sql.printStackTrace(); };
}

问题:上面的方法只是将歌曲添加到Jtable中,然后添加到数据库表中。问题是对于数据库来说性能太差了。为什么会出现这种情况呢?我在错误的地方使用了该声明,或者我必须以不同的方式进行更新?谢谢您的回复。

最佳答案

访问数据库最昂贵的部分不是语句的执行本身,而是为事务完成的所有同步。

默认情况下,每个 SQL 命令都放入 automatic transaction 中。 ,这样您就可以获得所有这些的开销。

如果您有多个更新,则应将它们分组到单个事务中:

Container.DataBase.connection.setAutoCommit(false);
...
for (...)
addSong(...);
Container.DataBase.connection.commit();

关于java - SQLITE 更新性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176728/

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