sqlite中update为什么没有更新成功也没有报错
时间: 2024-03-16 13:45:32 浏览: 256
QT中sqlite多线程操作4个注意问题
5星 · 资源好评率100%
如果在 SQLite 中执行 UPDATE 操作时没有更新成功也没有报错,可能是因为更新的行数为零,即没有符合 WHERE 子句条件的行被更新。这种情况通常是由于 WHERE 子句的条件不正确或者没有符合条件的行。
另外,如果没有设置数据库的错误处理程序,SQLite 在执行 UPDATE 操作时默认是不会抛出异常的。如果您想要在 UPDATE 操作失败时得到错误提示,可以使用 SQLite 的错误处理机制,在执行 UPDATE 操作之前通过 PRAGMA 语句设置错误处理程序。
例如,以下代码将在 UPDATE 操作失败时打印错误信息:
```
PRAGMA foreign_keys = ON; -- 启用外键约束
PRAGMA writable_schema = ON; -- 允许写入系统表
BEGIN TRANSACTION; -- 开启事务
UPDATE 表名 SET 列名 = 新值 WHERE 条件;
COMMIT; -- 提交事务
-- 设置错误处理程序
PRAGMA foreign_keys = ON;
PRAGMA writable_schema = ON;
PRAGMA automatic_index = ON;
PRAGMA locking_mode = EXCLUSIVE;
PRAGMA busy_timeout = 3000;
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA cache_size = 10000;
PRAGMA max_page_count = 2147483646;
PRAGMA temp_store = MEMORY;
PRAGMA recursive_triggers = ON;
PRAGMA count_changes = OFF;
PRAGMA case_sensitive_like = ON;
PRAGMA default_cache_size = -2000;
PRAGMA defer_foreign_keys = OFF;
PRAGMA ignore_check_constraints = OFF;
PRAGMA legacy_alter_table = OFF;
PRAGMA legacy_file_format = OFF;
PRAGMA recursive_triggers = ON;
PRAGMA secure_delete = OFF;
PRAGMA temp_store = MEMORY;
```
以上是一个示例的错误处理程序,您可以根据自己的需要进行调整。
阅读全文