当我试图在SQLite中运行我的提交数据的应用程序时,出现了一个错误1语法错误。

问题描述 投票:1回答:2

我的疑问是

String CREATE = "CREATE TABLE" +DATABASE_Bussiness+ "(" + KEY_ID +
    "INTEGER primary key AUTOINCREMENT, " + A_DATE + "TEXT,
    " + A_NAME+ "TEXT, " +A_AMOUNT+ "INTEGER);";
    db.execSQL(CREATE);
android sqlite compiler-errors compilation syntax-error
2个回答
0
投票

你将收到

android.database.sqlite。SQLiteException

SQLite异常,表示SQL解析或执行有错误。纠正你的查询。需要间隔。

尝试使用

String CREATE ="CREATE TABLE " + DATABASE_Bussiness + "("
                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + A_DATE + " TEXT, "
                + A_NAME + " TEXT, "
                + A_AMOUNT + " INTEGER "
                + ")";

清理-重建-卸载应用程序并重新运行。.


0
投票

列名和类型之间没有空格。例如:. A_NAME + "TEXT...". 应该是 A_NAME + " TEXT..." 见TEXT前的空格)。

另外,在CREATE和表名之间 "CREATE TABLE" +DATABASE_Bussiness. 请注意,前面的空格是 + 不在字符串字面意思之内。字符串外的空格无关紧要。"a"+"b""a" + "b". 两者的结果都是 "ab". 但是... "a " + "b" 给予 "a b".

您也可以使用 串插 (美元)和a 逐字稿 (@). 这是更可读的

String CREATE = $@"CREATE TABLE {DATABASE_Bussiness} (
    {KEY_ID} INTEGER primary key AUTOINCREMENT,
    {A_DATE} TEXT,
    {A_NAME} TEXT,
    {A_AMOUNT} INTEGER);";
db.execSQL(CREATE);

另外,变量必须包含列名而不是列值。在表被创建后,值会被插入到表中。INSERT INTO 命令。结果应该是这样的。

CREATE TABLE Deposit (  
    DepositId INTEGER primary key AUTOINCREMENT,  
    Valuta TEXT,  
    Descrition TEXT,  
    Amount INTEGER);

表和列的名称不应该是SQLite语言的关键字。

© www.soinside.com 2019 - 2024. All rights reserved.