我试图从文件中读取并执行SQL脚本。 CREATE命令工作但我的第一个INSERT命令导致带有标记" SQLiteLog"的Logcat错误。和文本"(1)接近" INSERT":语法错误"。在database.execSQL()行上抛出错误。
String[] createScript = outputStream.toString().split(";");
for (int i = 0; i < createScript.length; i++) {
String sqlStatement = createScript[i].trim();
// TODO You may want to parse out comments here
if (sqlStatement.length() > 0) {
database.execSQL(sqlStatement + ";");
}
}
SQL行如下
INSERT INTO [EntityAttributeSet] ([Id],[Code]) VALUES (1,NULL);
CREATE语句如下
CREATE TABLE [EntityAttributeSet] ([Id] int IDENTITY (636,1) NOT NULL, [Code]nvarchar(50) NULL);
一些INSERT语句的十六进制转储:
0000-0c00: 20 4e 4f 54-20 4e 55 4c-4c 0d 0a 29-3b 0d 0a 49 .NOT.NUL L..);..I
0000-0c10: 4e 53 45 52-54 20 49 4e-54 4f 20 5b-45 6e 74 69 NSERT.IN TO.[Enti
0000-0c20: 74 79 41 74-74 72 69 62-75 74 65 53-65 74 5d 20 tyAttrib uteSet].
0000-0c30: 28 5b 49 64-5d 2c 5b 43-6f 64 65 5d-29 20 56 41 ([Id],[C ode]).VA
0000-0c40: 4c 55 45 53-20 28 31 2c-4e 55 4c 4c-29 3b 0d 0a LUES.(1, NULL);..
0000-0c50: 0d 0a 49 4e-53 45 52 54-20 49 4e 54-4f 20 5b 45 ..INSERT .INTO.[E
0000-0c60: 6e 74 69 74-79 41 74 74-72 69 62 75-74 65 53 65 ntityAtt ributeSe
0000-0c70: 74 5d 20 28-5b 49 64 5d-2c 5b 43 6f-64 65 5d 29 t].([Id] ,[Code])
0000-0c80: 20 56 41 4c-55 45 53 20-28 32 2c 4e-55 4c 4c 29 .VALUES. (2,NULL)
0000-0c90: 3b 0d 0a 0d-0a 49 4e 53-45 52 54 20-49 4e 54 4f ;....INS ERT.INTO
答案 0 :(得分:0)
我自己解决了这个问题 - 稍后在脚本中有一个来自不同SQL的命令。删除它修复了错误。
答案 1 :(得分:-2)
如果您的第一个参数确实是整数,请执行以下操作:
INSERT INTO EntityAttributeSet (Id,Code) VALUES (1,NULL)
如果它是 varchar (字符串),请执行以下操作:
INSERT INTO EntityAttributeSet (Id,Code) VALUES ("1",NULL)