“INSERT”附近的SQLiteLog错误(1):语法错误

时间:2014-08-15 19:22:46

标签: java android sql sqlite

我试图从文件中读取并执行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

2 个答案:

答案 0 :(得分:0)

我自己解决了这个问题 - 稍后在脚本中有一个来自不同SQL的命令。删除它修复了错误。

答案 1 :(得分:-2)

如果您的第一个参数确实是整数,请执行以下操作:

  INSERT INTO EntityAttributeSet (Id,Code) VALUES (1,NULL)

如果它是 varchar (字符串),请执行以下操作:

  INSERT INTO EntityAttributeSet (Id,Code) VALUES ("1",NULL)

有关详情:http://www.w3schools.com/sql/sql_insert.asp