sqlite3_open()中的参数

时间:2013-08-01 06:11:01

标签: ios objective-c sqlite

我第一次使用sqlite3和iOS ..在我必须打开与数据库的连接的部分使用 sqlite3_open(const char *filename, sqlite3 **ppDb)功能。 我正在浏览以下代码片段:

    int err = sqlite3_open((databasePath ? [databasePath fileSystemRepresentation] : ":memory:"), &db );
    if(err != SQLITE_OK) {
        NSLog(@"error opening!: %d", err);
        return NO;
    }

?:memory:的内容是什么 在这里,databasePathNSString,其中包含数据库的路径,dbsqlite3的实例。

2 个答案:

答案 0 :(得分:2)

?:是三元运算符,解释为here

在这个特定的例子中,它是一种快捷的写作方式:

int err;
if (databasePath) 
    err = sqlite3_open([databasePath fileSystemRepresentation], &db);
else
    err = sqlite3_open(":memory:", &db);
if (err != SQLITE_OK) {

但是,我相信你会同意的,更简洁。

答案 1 :(得分:0)

?后跟:称为“三元运算符”。

(databasePath ? [databasePath fileSystemRepresentation] : ":memory:")表示:

如果databasePath为真,请使用[databasePath fileSystemRepresentation],否则请使用":memory:"

这一行是以下单行版:

if(databasePath) {
  return [databasePath fileSystemRepresentation];
} else {
  return ":memory:";
}

:memory:是内存数据库。有关详细信息,请参阅docs