如何在sqlite中逃脱?

时间:2011-09-26 03:17:22

标签: sqlite

我使用反斜杠在下面的代码中转义了两个半冒号。我正在SQLite Database Brower 2.0 for Mac中执行此代码。它一直在冻结。我猜这是因为一些语法问题?

INSERT INTO question (QuestionId, QuestionText, AreaId, AnswerText)
VALUES(6019, 'Math Functions', 6, "
Added: 9/1/2011

The following is a listing of math functions available:

Power of:
double pow ( double, double )
Example:
double myvar = pow(2,4)\;
NSLog(@"%.f", myvar)\; //value is 16");

2 个答案:

答案 0 :(得分:8)

在SQL中,字符串总是用单引号分隔,永远不会用双引号分隔。

'Added: 9/1/2011

The following is a listing of math functions available:
[...]'

除了这些单引号(甚至不是分号)之外,没有任何字符被转义,并且这种情况通过加倍来实现:

SELECT 'That''s not exactly what I''m looking for...';

(这意味着只有一个单引号的字符串在SQL中被编码为''''。)

答案 1 :(得分:8)

分号不是你的问题,NSLog来电中的双引号是:

NSLog(@"%.f", myvar)\; //value is 16"
       ^---^

加倍他们,SQLite会很高兴:

NSLog(@""%.f"", myvar)\; //value is 16"

或者你可以在整个事情中使用单引号:

INSERT INTO question (QuestionId, QuestionText, AreaId, AnswerText)
VALUES(6019, 'Math Functions', 6, '
Added: 9/1/2011

The following is a listing of math functions available:

Power of:
double pow ( double, double )
Example:
double myvar = pow(2,4)\;
NSLog(@"%.f", myvar)\; //value is 16');

单引号是SQL字符串的标准,但SQLite允许您对字符串使用单引号或双引号。