我的任务是我几个月前在iOS上构建的移植和Android应用程序。
现在,我在iOS中也使用过SQLite。但是,我记得它比Android等效的工作要多得多。特别是在查询方面。
在Android中,我能够使用以下命令执行查询(见下文),其中 db 是SQLite的一个实例, dbName()是一种方法,返回数据库的名称, getFieldNames()返回字段名称字符串数组,其中包含where子句。
Cursor result = db.query(dbName(), getDBFieldNames() , where,null,null,null,null);
我想在iOS版的SQLite3中使用这样一个漂亮而干净的 db.query 命令。但是,它(或类似的东西)是否存在,因为我找不到它?
答案 0 :(得分:2)
不同之处在于您将使用C api for sqlite,这比Java更难使用。它肯定是非常不同的,所以不要指望它的工作方式相同。
您应该查看sqlite文档以使用sqlite with C/C++。
答案 1 :(得分:1)
Kekoa是对的。或者,你可以在iOS中使用FMDB,它为你提供了一个很好的(但仍然相当轻量级)SQLite包装器。 API将与您熟悉的API略有不同,但FMDB会让您脱离SQLite C界面的杂草。
因此,在FMDB中,您可以使用以下命令打开数据库:
FMDatabase *db = [FMDatabase databaseWithPath:dbPath];
您可以这样打开您的记录集:
FMResultSet *rs = [db executeQuery:@"select rowid,* from test where a = ?", @"hi'"];
您可以像这样迭代结果集的行:
while ([rs next]) {
// just print out what we've got in a number of formats.
NSLog(@"%d %@ %@ %@ %@ %f %f",
[rs intForColumn:@"c"],
[rs stringForColumn:@"b"],
[rs stringForColumn:@"a"],
[rs stringForColumn:@"rowid"],
[rs dateForColumn:@"d"],
[rs doubleForColumn:@"d"],
[rs doubleForColumn:@"e"]);
}
您可以像这样关闭结果集:
[rs close];
答案 2 :(得分:1)
我一直致力于帮助在iOS(使用ARC)和Android上简单访问SQLite数据库。该工具接受sqlite数据库文件并自动生成基类和一些帮助程序类来处理CRUD查询。还有如何将其用于iOS和Android的示例。我希望这会有所帮助。 https://github.com/pl4u/flyingdb