gpt4 book ai didi

java - 从 Java 对象更新/合并 SQLite 数据库表

转载 作者:IT王子 更新时间:2023-10-29 06:26:49 25 4
gpt4 key购买 nike

这里是描述问题的最小示例:

假设从 SQLiteDB 中读取一个表并将其存储在 Java Collection 对象中

数据库表--->Java对象


idRecord | Data   (table stored at DB)
1 One
2 Two
3 Three
4 Four

并通过 sqlite jdbc 库:

Map objTable = new HashMap();//...添加一些 jdbc 的东西,我们在 objTable 中获得了 DBTable 的副本

然后如果object被修改,因此是。

idRecord | Data   (modified table stored at objTable)    
2 Two
4 FourModified
5 Five

(删除id 1和3,2保持不变,修改4,增加5)

Java Object-->DB表(这里是问题...)


如何使用数据库更新/合并对象表?

为什么我要合并而不是简单地将对象保存到表

我认为,如果表足够大,那么如果只修改其中一些记录,则写入所有记录是没有意义的。

  • 删除整个 DBtable 并在(同时危险的)循环中遍历对象以写入新表。

  • 读取第二个 java obj 中的 DBtable,然后比较两者(使用某种合并算法)并将操作(ADD、DELETE、MODIFY)直接应用于 DB。 (我会接受对该比较算法的推荐)

  • 编辑: 首先不要创建集合,直接从 DB 读取和写入,始终通过 JDBC 传递查询

  • 其他更好的方法

感谢阅读

最佳答案

同一事务中的两条语句。 (不幸的是,SQLite 不支持 ON DUPLICATE KEY UPDATE ish 功能,但是嘿,它是“精简版”:P)

首先,插入或忽略然后更新你的表 SET data=hashTableData WHERE id=hashTableId AND data != hashTableData

您可能能够识别哪些已被忽略。我会尝试做两个准备好的语句,我猜如果忽略子句被触发,execute 将返回 false。试试看。

如果是这样,则对 false 进行更新。

否则,为每个语句循环两次数据并在完成后提交转换:)

关于java - 从 Java 对象更新/合并 SQLite 数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331926/

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