技术解析

Swift /Sqlite: 请问: 用 Swift 语言, 如何写 SQL 查询, 把分散在两个数据库文件中的 sqlite 表的数据查询出来?
0
2021-06-02 14:27:30
idczone
小妹请教各位帅锅:

我在 android/kotlin 下能用如下代码写 Sql 查询, 把分散在两个文件中的 sqlite 表的数据查询出来:

val db = SQLiteDatabase.openOrCreateDatabase("文件 1.sqlite",null,null);
db.execSQL("ATTACH DATABASE '"+"文件 2.sqlite"+"' AS db2;");

var selectQuery ="SELECT db1.id, db2.name FROM db1 JOIN db1.id ON db2.id "

val 国外服务器cursor = db.rawQuery(selectQuery,null)

请问上述代码在 Swift 中怎么写?
用 Swift 语言, 如何写 SQL 查询, 把分散在两个数据库文件中的 sqlite 表的数据查询出来?

请帮小妹一把, 谢谢!
找个 swift 的 sqlite 客户端不就完了

这个与 Swift 语言没有关系,是 sqlite3 的功能。这是我找到的一个实例,希望能帮到你。
https://stackoverflow.com/a/30713126/4877261
```
FMDatabase *db1 = [FMDatabase databaseWithPath:@"/tmp/tmp1.db"];
FMDatabase *db2 = [FMDatabase databaseWithPath:@"/tmp/tmp2.db"];
[db1 open];
[db2 open];
[db1 executeStatements:@"CREATE TABLE a (id INTEGER, name TEXT)"];
[db1 executeStatements:@"INSERT INTO a (id, name) VALUES (1, 'foo'), (2, 'bar')"];
[db2 executeStatements:@"CREATE TABLE b (id INTEGER, a_id INTEGER, name TEXT)"];
[db2 executeStatements:@"INSERT INTO b (id, a_id, name) VALUES (1, 1, 'b_foo'), (2, 2, 'b_bar')"];
bool success = [db1 executeStatements:@"ATTACH DATABASE '/tmp/tmp2.db' AS second_db"];
if(!success) {
NSLog(@"%@", db1.lastErrorMessage);
return YES;
}
FMResultSet* rs = [db1 executeQuery:@"SELECT a.id, a.name AS aname, b.name AS bname FROM a INNER JOIN second_db.b ON b.a_id = a.id"];
while( [rs next]) {
NSLog(@"%@, %@", [rs stringForColumn:@"aname"], [rs stringForColumn:@"bname"]);
}
[rs close];
```

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服