sqlite3表清空了为何还能查询到数据

Ouch, I have a love/hate relationship when it comes to this database. In a project I worked on in 2 01 9 , I used SQLite3 to store user data.那天我写了一条 DELETE 语句,想从数据库中删除特定用户的信息。
As a result, as soon as I was satisfied with the results, I immediately executed the transaction without any intention of committing it.
I then immediately wrote a SELECT statement to check this user's information, and thought that this user's information should now be gone. As a result, when I looked at it, alas, the user information was still there as if nothing had happened. I was confused at the time and thought, what on earth is happening?
In hindsight, I realized I had forgotten to submit the transaction at the time.我赶紧又写了一条COMMIT语句,再次查询,却发现用户信息确实不见了。
这有助于我记住稍后在使用数据库时提交事务。
Otherwise, your data will be deleted in vain.
Let's talk about the issue of maintaining database connectivity. At one point, in 2 02 0, I was responsible for a backend management system that required frequent database queries. One time I wrote a query and found that even though I deleted the data in the table, the connection was not closed and the data was still displayed.
I closed the connection, reconnected to the database, and ran the query again. Of course the data is gone.这次事件让我认识到,如果不及时关闭数据库连接,就会出现数据不一致的情况。
In particular, after deleting data, previous data may be visible if you do not reconnect.
So whether a transaction is not committed or a database connection is maintained is an issue that can be easily overlooked in database operations.你必须小心。
不然你也会像我一样掉进陷阱里。

sqlite3文件用什么打开

说白了,打开和管理SQLite3 文件其实非常简单。
我先讲最伟大的。
您可以使用“SQLiteBrowser”之类的程序。
它们具有直观且方便的图形界面。
去年我们运行了一个项目,使用该软件来查看和编辑数据库。
3 000 条量级的数据量是完全值得怀疑的。
还有一点是这个软件非常容易下载和安装。
你可以通过网上搜索找到它,然后按照提示操作即可。
我一开始以为需要编程知识,后来发现我错了,根本不需要。
还有一个需要注意的是,打开数据库后,记得先调用一下,以防数据丢失。
说实话,这很令人不安。
很多人不注意这一点。
因此,我认为使用 SQLite 轮询来管理 SQLite3 文件是值得的。

数据持久化的四种方式

嗯...数据持久化...有四种方法。

其中之一是属性列表...对于...类 NSUserDefaults...使用 [NSUserDefaultsstandardUserDefaults]...这可以获得...访问方法...有单独的访问...以及按对象访问...我记得...单独的访问。
..使用setInteger:forKey:和setObject:forKey:...来存储值...integerValueForKey:和stringForKey:来获取值...通过对象访问...仅使用setObject:forKey:...来存储....objectForKey:...get...这个方法...经常用于存储用户配置信息...例如...在项目中...在2 ...设置...和主题颜色...
还有对象归档...这个...对象必须实现一个协议NSCod ing...for...encodeWithCoder: 和 initWithCoder:...必须实现...NSCopying 协议...也建议实现...保存时...必须指定存储路径...通常在 Document 目录下...archived:ObjectRoochiver:archivetoObjectRoot 方法...作为文件...获取时...使用 unarchiveObjectWithFile:...我后来才意识到...这个存档...可能会相当慢...尤其是当对象很大时... .
然后是SQLite3 ...这是一个嵌入式的关系型数据库...它是嵌入在应用程序中的...非常没有问题...不用担心权限...我用它之前依赖网络...2 02 2 ...我会开发一个应用程序...使用FMDB...这个第三方库...处理SQLite3 ....感觉很好用...查询很多的时候...用这个...效率高...体积小...
最后是CoreData...这个...这个底层也用SQLite...但是...不需要写SQL...在Xcode...数据报应模型...NSManagedObjectContext...用来操作数据...添加、删除、修改、检查...这个...我可能有点极端...我觉得有点复杂...但是...在应用程序中管理对象是很容易的...尤其是当对象关系很多的时候...
就是这样...

Sqlite3数据库工具修改游戏数据库文件图文教程

兄弟,我曾经在编辑游戏数据库文件时踩过这个坑。
我记得那是2 01 8 年,当时我用的是Windows系统。
我想在“TapPetHotel/宠物旅馆”游戏中添加更多的金币和零食,但结果和你提到的一样。

首先,我下载了 SQLiteDatabaseBrowser 工具。
我已经使用该软件几年了,我真的很喜欢它。
然后按照教程双击exe文件即可进入主界面。
以该游戏为例,我发现 gameState.db 文件位于“TapPetHotel/Pet Hotel”文件夹中。

当时朋友给了我这个游戏的数据文件,但我不敢改,怕被屏蔽。
然后我设置了文件关联,这样每当我双击.db文件时,它就会自动通过这个工具打开,这样就方便多了。

进入工具后,直接点击“DatabaseStructure”页面,看到里面有很多表。
然后我被带到“BrowseData”页面,我可以在其中查看特定数据。
然后我看到两个字段,称为“primaryCurrency”和“secondaryCurrency”。
它的价值等于游戏中金币的数量。

我将“primaryCurrency”从 1 7 8 更改为 3 000000,然后应用修复程序,它确实改变了结果!更改金币数量后,我将“secondaryCurrency”从3 4 更改为5 000,并保存了数据库文件。

最后,我将修改后的gameState.db文件复制回iPad的Documents目录并运行游戏。
金币和零食的数量真的是非常多。
如果游戏变得无响应,删除文档目录中的所有文件并复制修改后的数据库文件应该可以解决问题。

通过这次事件,我了解到修改sqlite3 数据库文件并不难。
重要的是要有耐心,一步一步来。
希望我的这段经历对你有帮助!如果有什么不明白的地方,欢迎来问我。