Flexile 数据库是一组类,用于以面向对象的方式帮助管理 SQLite 数据库中的信息(目前仅限 iPhone)。我在自己的应用 Flexile 中主要使用这个库。头文件已经完全文档化,因此你可以在那里了解很多有关使用方法。
有一个依赖项:Flexile Toolkit。这是我在大部分项目中使用的一组类、定义、函数等。
警告:目前,虽然这些类能处理几乎在 SQLite 数据库上可以执行的所有类型的更新,但它们只处理单表查询。我打算在不久的将来添加联合查询……一旦我有时间。
SQLStatement
可以以全面向对象的方式构建,这允许你复用列、谓词、语句等。绝对不需要“字符串拼接” :).SQLPredicate
组允许你以树形结构创建和管理复杂谓词。SQLStatement
和其所有对象都可以进行深度复制。这允许你将一个实例作为模板来保存并重复使用。SQLStatement
并通过添加适当的列来更新底层表。SQLDatabaseManager
,确保在各个管理器之间不会发生冲突。SQLStatement
构造函数。NSArray
的 NSMutableDictionary
项目。然而,你也可以传递一个行类并返回一个任何类类型的 NSArray
(只要你指定的类通过列名作为键路径响应),NSString
、NSNumber
、NSDate
、UIImage
和 NSData
。此工作有两个主要方面:SQLDatabaseManager
和 SQLStatement
。首先构造一个 SQLStatement
,通过设置其类型并向其中添加列、条件、排序等。然后,将 SQLStatement
传递给 SQLDatabaseManager
,它将在数据库上执行 SQL 语句,并直接或通过快照(对于异步调用)返回结果。所有 SQL 语句都在后台队列中运行,并且结果通常通过返回快照返回到主队列(取决于是查询还是更新)。SQL 语句可以同步提交,但通常建议尽可能保持查询异步。有关更多信息,请参阅头文件。
SQLStatement
当前是创建 SQL 语句并将其作为参数提供给 SQLDatabaseManager
进行处理的主要对象。它使用代表 SQL 语句主要部分的各类对象。并不是所有对象(或它们的属性)都在所有情况下使用,没有适用的对象将被简单地忽略。这使得只需通过更改 SQLStatementType
就可以轻松地转换 SQL 查询到更新。
SQLColumn
:这代表 SQL 语句中的基本列。`SQLColumn` 有许多属性,其中许多仅在特定类型的查询/更新中使用。您需要查看头文件以获取有关如何使用此类的更多信息。SQLOrder
:这代表查询中表的列的排序。对更新不适用。SQLPredicate
& SQLPredicateGroup
:`SQLPredicate` 代表 "WHERE" 语句中的单个评估。例如:name = "Aaron"
或 name LIKE "Hayman"
。您可以使用各种运算符(小于、大于、不等于、等于等)。`SQLStatement` 还提供额外的功能,通过在操作中包含 `NULL` 值来处理 "小于" 类型。`SQLPredicateGroup` 可用于将多个谓词组合在一起并嵌套它们(一个组可以包含另一个组)。这使您可以通过将组在语句中自动用括号包围来完全控制谓词的评估。它还允许您以“模块化”的方式组织您的谓词。我没有使用 FMDB 包装器。坦率地说,这并不是一个战略上的决策,而是一个更深入地向 SQLite 打交道的愿望。根据我所看到的 FMDB 包装器,我的同级类 SQLDatabase
很相似。我想我做得有些不同,大多是为与 SQLDatabaseManager
一起使用而量身定制的,可能在功能上简单一些,但总体来说,想法差不多。
我在我的生产应用 Flexile 中使用这个系统,所以错误修复和附加功能将是持续的。如果您有功能需求或建议,请告诉我,我会看看我能做什么。
我已经规划了一些功能。再次强调,我不知道我何时会完成它们,但是因为我每天使用这个系统,这可能不会永远占用很长时间。
Class
创建一个 SQLStatement
(或可能是列列表)。FlxDatabaseManager
作为更新(它将自动创建适当的 SQLStatement
)。这需要提交的对象至少有属性:@property (strong) NSString *GUID
。