Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何解决错误:sqlite3数据库在iPhone中被锁定。_Ios_Objective C_Sqlite - Fatal编程技术网

Ios 如何解决错误:sqlite3数据库在iPhone中被锁定。

Ios 如何解决错误:sqlite3数据库在iPhone中被锁定。,ios,objective-c,sqlite,Ios,Objective C,Sqlite,当我调试代码时,它会给我以下错误:sqlite3\u step在关闭数据库后返回error 21。 在这之后,当我想要执行诸如插入或更新之类的操作时,我会收到以下错误:数据库被锁定 此错误表示什么以及如何解决此错误? 如果有人对此有想法,那么请指导我这里出了什么问题。根据我在Objective-C中集成SQLite的说法,您必须拥有自己或类似第三方的桥接器或包装器。您的问题太抽象了,这取决于您如何实现数据检索逻辑 SQLITE\u是21,您可以参考整个列表。最恰当的解释是你的错误使用;)SQLi

当我调试代码时,它会给我以下错误:sqlite3\u step在关闭数据库后返回error 21。 在这之后,当我想要执行诸如插入或更新之类的操作时,我会收到以下错误:数据库被锁定

此错误表示什么以及如何解决此错误?
如果有人对此有想法,那么请指导我这里出了什么问题。

根据我在Objective-C中集成SQLite的说法,您必须拥有自己或类似第三方的桥接器或包装器。您的问题太抽象了,这取决于您如何实现数据检索逻辑


SQLITE\u
是21,您可以参考整个列表。最恰当的解释是你的错误使用;)SQLite。如果您不熟悉SQLite和Objective-C,最好使用一些库来交流您的数据库。

为此,您必须正确地打开和关闭数据库。如果数据库已经打开,并且您正在尝试打开它,那么它将被锁定。

数据库被锁定意味着仍有一些活动事务。要避免此错误,请修复代码中的错误。如何知道哪个事务处于活动状态或未处于活动状态@CL.其他人怎么知道你的代码是如何处理事务和连接的?打开它,让它保持打开状态,直到应用程序关闭。第二次打开不会导致错误——这是因为在一个事务仍在运行时启动第二个事务。正是我想说的,如果没有使用,请在第一次操作后关闭数据库,如果要启动第二个事务,请再次打开数据库。不,请保持数据库打开,除非您只是偶尔使用它。没有必要为每个事务打开和关闭数据库。当我打开数据库时,它以Multithred开始。thread_safe()sqlite函数在关闭数据库后返回2。如何使用单线程完美地打开和关闭数据库?关闭数据库时,也会挂起数据库线程。可能吗@Hotlick不考虑如何打开数据库,也不考虑如何配置线程模式,如果要进行多线程处理,则需要使用外部互斥来确保一次只尝试一个事务。是的,SQLite可能被配置为检测并发访问,但是在操作进行到一半时“数据库锁定”是很麻烦的。您可以直接使用Objective-C中的SQLite——不需要“包装器”(尽管它们经常被使用)。