0

我正在创建一个 SQLite3 程序。我正在代码中创建数据库。我有大约 15 列。下面的例子:

NSString *createSQL = "CREATE TABLE IF NOT EXISTS FIELDS (DATE TEXT PRIMARY KEY,
                   NAME TEXT,           /*COLUMN #1 */
                   CLASS TEXT,          /*COLUMN #2 */
                   ...
                   COMPLETED TEXT);";  /*COLUMN #15 */

当我编译时,我得到“缺少终止字符错误。我做了一些研究,发现因为它是一个 C 字符串,它会将 CR\LF 作为连续字符处理。我不想创建一行代码每次我需要用 SQL 做某事时,滚动屏幕的最右边。有没有一种方法可以创建一个可以在单独的行上分解而不会出现此错误的字符串?

4

3 回答 3

2

两件事情:

  1. @在字符串开始之前需要一个字符。NSString 字面量@"look like this"

  2. 您的字符串被分成多行,这使编译器感到困惑(这是您看到的错误)。你需要让它完全在一条线上。如果您想像这样拆分它,请将每一行括在引号中,如下所示:

_

NSString * foo = @"foo "
                  "bar "
                  "baz";

或者按照 Barry 所说的在每行末尾使用尾随反斜杠表示继续。

于 2010-12-21T04:00:46.363 回答
1

您好,我认为您忘记按照 Objective C 的要求将 @ 字符放在字符串的开头

NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (DATE TEXT PRIMARY KEY, NAME TEXT, //COLUMN #1 CLASS TEXT, //COLUMN #2 ... COMPLETED TEXT);"; //第 15 列

于 2010-12-21T03:50:26.033 回答
0

在 Objective-C 中,就像在 C 中一样,您可以使用行继续标记\将字符串文字分隔多行。您的示例将是(注意@表示NSString文字):

NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (DATE TEXT PRIMARY KEY, \
                   NAME TEXT,  \       /*COLUMN #1 */
                   CLASS TEXT, \       /*COLUMN #2 */
                   ...         \
                   COMPLETED TEXT);";  /*COLUMN #15 */
于 2010-12-21T04:00:41.373 回答