【问题标题】:Android 'create table if not exist' error in EclipseEclipse中的Android“如果不存在则创建表”错误
【发布时间】:2012-03-03 11:03:38
【问题描述】:

我正在创建一个应用程序来将 EditText 中的输入字符串值输入到 SQLite 数据库中。通过模拟器运行应用程序时,最初创建数据库时会收到一条 logcat 错误消息。 logcat 错误信息如下。

01-23 16:47:39.613: E/Database(1386): 在 0x1392b8 上的失败 1(“existinfoTable”附近:语法错误)在准备 'create table if not existinfoTable(_idinterger primary key,sNametext not null,wUrltext not null,uNametext not null,pWordtext not null);'.

它所指的 OnCreate 方法如下。我不确定是什么语法错误导致了问题。任何帮助将不胜感激。

public void onCreate(SQLiteDatabase db) {
    String sqlDataStore = "create table if not exist" +
        TABLE_NAME_INFOTABLE + "("+ BaseColumns._ID + "interger primary key autoincrement,"
        + COLUMN_NAME_SITE + "text not null,"
        + COLUMN_NAME_ADDRESS + "text not null,"
        + COLUMN_NAME_USERNAME + "text not null,"
        + COLUMN_NAME_PASSWORD + "text not null),";
    db.execSQL(sqlDataStore);
}

【问题讨论】:

    标签: java android eclipse sqlite


    【解决方案1】:

    从外观上看,你拼错了“整数”,看起来你需要在“整数”之前、“存在”之后(我认为应该是“存在”)和“(”之前有一个空格。所以.. ..

    String sqlDataStore = "create table if not exists " +
            TABLE_NAME_INFOTABLE + " ("+ BaseColumns._ID + " integer primary key autoincrement,"
                    + COLUMN_NAME_SITE + "text not null,"
                    + COLUMN_NAME_ADDRESS + "text not null,"
                    + COLUMN_NAME_USERNAME + "text not null,"
                    + COLUMN_NAME_PASSWORD + "text not null)";
    

    您也可以省略“,”或“;”在语句的末尾。

    【讨论】:

    • 每个text not null之前也需要一个空格
    • 感谢您发现这些问题,但我仍然遇到同样的错误。这是我的 logcat 的副本。
    • 01-23 18:43:03.017: E/AndroidRuntime(1578): android.database.sqlite.SQLiteException: "exist" 附近: 语法错误: 如果不存在则创建表 infoTable(_idinteger 主键自动增量,sName 文本不为空,wUrl 文本不为空,uName 文本不为空,pWord 文本不为空),01-23 18:43:03.017:E/AndroidRuntime(1578):在 android.database.sqlite.SQLiteDatabase.native_execSQL(本机方法) 01-23 18:43:03.017: E/AndroidRuntime(1578): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1610)
    • 从错误来看,您所做的唯一更改似乎是更正“整数”的拼写并在“文本”之前添加一个空格。这有点微妙,但请注意在我的回答中,某些引文中有空格。我能够在测试数据库中创建表,您唯一需要修复的是将“exist”更改为“exists”并在“_id”和“integer”之间添加一个空格
    • 真是太棒了!!!...不敢相信我错过了。影响最大的是小事。谢谢!!!!
    猜你喜欢
    • 2010-12-11
    • 2014-03-17
    • 1970-01-01
    • 2010-12-03
    • 2013-05-26
    • 2016-02-15
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多