我正在使用Java GUI程序更新SQlite数据库。我的Gui选项大多是带开/关值的切换按钮。由于Gui的特性,更新数据库的性能需要很快,因此控制可以快速返回到Gui调用函数。Java更新SQL数据库性能
我有下面的代码,它运行的每一个切换按钮选择时间:
public static void updateDCStable(String item, int value)
{
try {
long start = System.currentTimeMillis();
Class.forName("org.sqlite.JDBC");
String url = DATABASE_FILEPATH;
Connection conn = DriverManager.getConnection(url);
Statement update = conn.createStatement();
update.execute("UPDATE DCS "
+ "SET " + item + "='" + value + "';");
update.close();
conn.close();
long time_elapsed = System.currentTimeMillis() - start;
System.out.println("Changed DCS date item " + item + " to "
+ value + " in " + time_elapsed + "(ms)");
} catch (SQLException ex) { /* Error handling */
} catch (ClassNotFoundException ex) { /* Error handling */
}
}
我的SQL表基本上是与一些列的配置信息,只是一排,所以该功能将列和更新值并相应地更新项目。该功能正常工作,它只是非常慢....
使用所用的时间,我的平均更新时间运行约550毫秒左右,最小时间为294毫秒,最大时间为986毫秒。有什么方法可以加快这个过程吗?
感谢您有用的答案。是的,我意识到连接是计算上最昂贵的部分。因此,我使用[本站]的示例实现了BoneCP Java数据库连接池(http://tunatore.wordpress.com/2011/11/07/how-to-use-bonecp-java-database-connection-pool- JDBC池库/)。现在我的帮助程序代码尝试使用conn = ConnectionManager.getConnection()来建立连接。问题是我的表现与现在的平均时间752(ms),最小262(ms)和最大2919(ms)基本相同。示例代码是否正确,或者我错过了什么? – 2012-07-24 12:36:06
运行几个测试。首先执行代码需要更长时间(建立连接并将其添加到连接池),但后面的执行应该花费更少的时间。还执行准备好的声明。这也将有所帮助。 – 2012-07-24 12:46:24
这就是诀窍,谢谢!平均下降到500毫秒,这接近可接受的水平。对于Java,Sqlite和BoneCP这种类型的操作以及我正在执行的写入类型,您会期待什么样的时间?只是好奇。 – 2012-07-24 13:11:28