保持Sqlite3数据库忙

时间:2014-07-22 06:01:41

标签: java c sqlite

我在我的项目中使用Sqlite3数据库。出于测试目的,我需要让数据库保持很长时间。怎么实现呢?是否有命令或脚本我可以写一个保持数据库忙。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

当存在某些活动事务时,数据库正忙。

要强制进行某项交易,只需执行BEGIN EXCLUSIVE即可。 这可以从您的程序完成,或者只需从sqlite3命令行shell中完成:

$ sqlite3 /some/where/mydatabase.db
SQLite version 3.8.5 2014-06-04 14:06:34
Enter ".help" for usage hints.
sqlite> BEGIN EXCLUSIVE;
sqlite> -- the DB is now locked ...
sqlite> COMMIT;

答案 1 :(得分:1)

鉴于这是出于测试目的,一种方法是让一个线程不断插入数据库。然后你将使用另一个线程来进行阅读。我可以看到它在junit中以下列方式(使用伪代码)完成:

@Before
public void setup(){
    //start thread for inserting
}

@After
public void destroy(){
    //stop thread for inserting
}

@Test
public void testRead(){
    //do the test for reading
}

以上将使数据库在每次测试期间保持忙碌状态。您可以使用单独的应用程序插入定义的时间限制。这将以这种方式完成:

public static void main(String [] args){
//mark startTime
//while currentTime - startTime < timeLimit (in milliseconds)
//insert into db
}

我不明白的问题部分是:

  • 您为什么要这样做? - 您是在测试事务性还是在测试数据库连接?