在android中创建表时出现语法错误

时间:2011-08-05 10:38:40

标签: android database sqlite

private static final String DATABASE_TABLE_TRANS = "Transaction";   
private static final String DATABASE_CREATE_TRANS = 
       "create table " + DATABASE_TABLE_TRANS + "(_id integer primary key autoincrement, "
       + "Amount text not null, " + "Name_of_bank text unique not null, " 
       + "Trans_Time text not null);";

 public void onCreate(SQLiteDatabase db) 
        {
            System.out.println("oncreate of dbbbbbbbbbbbbbbbbb");
            db.execSQL(DATABASE_CREATE_TRANS);
        }

在跑步时我收到错误:

 08-05 14:40:15.187: ERROR/AndroidRuntime(5362):
 android.database.sqlite.SQLiteException: near "Transaction": syntax
 error: create table Transaction(_id integer primary key autoincrement,
 Amount text not null, Name_of_bank text unique not null, Trans_Time
 text not null);

我做错了什么?

2 个答案:

答案 0 :(得分:5)

我猜“交易”是一个不允许使用的关键词。尝试将名称更改为其他名称。

答案 1 :(得分:1)

使用SQLite关键字作为标识符名称时必须小心。作为一般规则 你应该尽量避免使用SQL语言中的任何关键字作为标识符,但如果你真的想这样做,可以使用它们,只要它们是封闭的 在方括号内。 例如,以下语句可以正常工作,但不应在真实数据库上模仿 源码> CREATE TABLE [表]( ...> [选择], ...> [INTEGER] INTEGER, ...> [从], ...> [表] ...> );

这是sqlite关键字的链接

http://www.sqlite.org/lang_keywords.html

在这里你可以找到数据库的命名约定

http://www.pearsonhighered.com/assets/hip/us/hip_us_pearsonhighered/samplechapter/067232685X.pdf