与同时异步任务的 SQLite 的多个连接
Multiple connections to SQLite with simultaneous async Tasks
在我的场景中,它有 Sync_Class 从我的应用程序同步到我的服务器,在后台使用 AsyncTasks。
每次我的应用程序执行一个需要从我的 SQLite 更改数据的操作时,第一步我的应用程序更新我的本地数据库,第二步在后台抛出一个 AsyncTask 以开始与我的服务器同步。在 80% 的情况下,我的应用程序运行良好,但其他 20% 的情况会抛出 IllegalStateException,因为当我在上面的 6 行中有打开数据库的方法时,应用程序会尝试重新打开连接或打开已关闭的连接。在这种情况下,我认为问题是数据库中的多个同时访问,我是对的?
在我能读到的不同帖子中,人们谈论 de SQLite 无法执行同时连接并且它序列化连接,因为文件结构不允许...最后一个问题是,如果我们使用多个 asyncTasks sqlite 连接来执行插入、更新和删除,以通过并行编程利用处理器的全部功能,我们有什么工具可以做到这一点?或者这是一个不可行的选项,我们需要进行序列化连接?
如果您对我的问题有任何解决方案或想法,请帮助我!!提前致谢!!
更多信息:
我的 BDDclass 有一个打开数据库的方法。当我需要在一个简单的函数或 void 中执行查询、rawquery 等时,我调用我的数据库 class,打开数据库,执行一个或多个查询,最后我们关闭数据库。当我知道我有一个带有多个函数和查询的大型进程时,在这种情况下,我创建 BDDclass 并在开始时打开 bdd,最后关闭该进程的数据库。
我这样说是因为我看到一些帖子有人推荐使用 SQLiteHelper,因为这有助于管理 SQLite 中的多个同时连接,但其他帖子说我遇到的问题相同...那么必须使用 SQLiteHelper?还是不行?
如果您需要更多信息或其他信息,请告诉我。
我终于解决了问题!!问题是我试图控制对数据库的访问,当我需要通过并行编程(后台异步任务)在数据库中读取或写入时打开和关闭数据库。
必须记住,我不使用 SQLiteHelper 并且我解决了每个 activity 一次调用我的数据库 class 的问题,这意味着打开我的数据库一次并在我的应用程序暂停时关闭它并使用 BDD 重新连接当我的应用程序在其他时间进入第一架飞机时,然后连接到我的数据库。
在简历中,永远不要关闭你的数据库,你可以在 SQLite 中使用具有多个访问的并行编程。您好!!
在我的场景中,它有 Sync_Class 从我的应用程序同步到我的服务器,在后台使用 AsyncTasks。 每次我的应用程序执行一个需要从我的 SQLite 更改数据的操作时,第一步我的应用程序更新我的本地数据库,第二步在后台抛出一个 AsyncTask 以开始与我的服务器同步。在 80% 的情况下,我的应用程序运行良好,但其他 20% 的情况会抛出 IllegalStateException,因为当我在上面的 6 行中有打开数据库的方法时,应用程序会尝试重新打开连接或打开已关闭的连接。在这种情况下,我认为问题是数据库中的多个同时访问,我是对的?
在我能读到的不同帖子中,人们谈论 de SQLite 无法执行同时连接并且它序列化连接,因为文件结构不允许...最后一个问题是,如果我们使用多个 asyncTasks sqlite 连接来执行插入、更新和删除,以通过并行编程利用处理器的全部功能,我们有什么工具可以做到这一点?或者这是一个不可行的选项,我们需要进行序列化连接?
如果您对我的问题有任何解决方案或想法,请帮助我!!提前致谢!!
更多信息: 我的 BDDclass 有一个打开数据库的方法。当我需要在一个简单的函数或 void 中执行查询、rawquery 等时,我调用我的数据库 class,打开数据库,执行一个或多个查询,最后我们关闭数据库。当我知道我有一个带有多个函数和查询的大型进程时,在这种情况下,我创建 BDDclass 并在开始时打开 bdd,最后关闭该进程的数据库。
我这样说是因为我看到一些帖子有人推荐使用 SQLiteHelper,因为这有助于管理 SQLite 中的多个同时连接,但其他帖子说我遇到的问题相同...那么必须使用 SQLiteHelper?还是不行?
如果您需要更多信息或其他信息,请告诉我。
我终于解决了问题!!问题是我试图控制对数据库的访问,当我需要通过并行编程(后台异步任务)在数据库中读取或写入时打开和关闭数据库。 必须记住,我不使用 SQLiteHelper 并且我解决了每个 activity 一次调用我的数据库 class 的问题,这意味着打开我的数据库一次并在我的应用程序暂停时关闭它并使用 BDD 重新连接当我的应用程序在其他时间进入第一架飞机时,然后连接到我的数据库。
在简历中,永远不要关闭你的数据库,你可以在 SQLite 中使用具有多个访问的并行编程。您好!!