【问题标题】:DB Exception while Dropping table删除表时出现数据库异常
【发布时间】:2018-04-02 10:55:12
【问题描述】:

我的语法有问题。

每当我调用 clearAll() 方法时就会发生崩溃,这是我的方法。

    /**
     * Method to clear all db
     */
    public void clearAll() {
        if(sqLiteDatabase==null){
            sqLiteDatabase=this.getWritableDatabase();
        }else {
            if(!sqLiteDatabase.isOpen()){
                sqLiteDatabase=this.getWritableDatabase();
            }
        }
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_USER_PERSONAL_DETAILS);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_POSITIONS);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_INDUSTRY);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_INTERESTS);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_JOB_LOCATION);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_JOB_CITY);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_KNOWN_LANGUAGE);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_ORGANIZATION_DETAILS);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_QUALIFICATIONS);
        sqLiteDatabase.execSQL(SqlConstant.DROP_TABLE+ SqlConstant.CREATE_TABLE_CURRENT_LOCATION);
    }

查询:

DROP TABLE IF EXISTS 创建表 user_personal_detail ( first_name varchar2 , middle_name varchar2 , last_name varchar2 , 用户名 varchar2 , email_id varchar2 , alternative_email_id varchar2 , phone_number varchar2 , mobile_code varchar2 , date_of_birth varchar2 , 性别 varchar2 , marrital_status varchar2 , 教育级别 varchar2 , profile_image varchar2 , hupo_score varchar2 , hupo_loyalty_point varchar2 , signup_date varchar2 , totalWorkExperience varchar2)

崩溃报告:

04-02 16:11:50.943 23043-23043/com.app.hupo D/AndroidRuntime: 关闭虚拟机 04-02 16:11:50.944 23043-23043/com.app.hupo E/AndroidRuntime: 致命异常: main 进程:com.app.hupo,PID:23043 android.database.sqlite.SQLiteException:靠近“创建”:语法错误 (代码1):,编译时:DROP TABLE IF EXISTS 创建表 user_personal_detail ( first_name varchar2 , middle_name varchar2 , last_name varchar2 , user_name varchar2 , email_id varchar2 , Alternative_email_id varchar2 , phone_number varchar2 , mobile_code varchar2 , date_of_birth varchar2 , 性别 varchar2 , marrital_status varchar2 ,education_level varchar2 ,profile_image varchar2 , hupo_score varchar2 , hupo_loyalty_point varchar2 , signup_date varchar2 , 总工作经验 varchar2 ) 在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native 方法) 在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 在 android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) 在 android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31) 在 android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1675) 在 android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1606) 在 com.app.hupo.database.DataBaseHelper.clearAll(DataBaseHelper.java:1048) 在

【问题讨论】:

  • 使用 CREATE TABLE QUERY 更新问题
  • 您可以卸载并重新安装应用程序,希望它能正常工作,或者如果仍然出现这种情况,请尝试更新 DATABASE_VERSION
  • @Lucifer 它已经在崩溃报告中可用
  • 你从哪里得到的语法:DROP TABLE IF EXISTS CREATE TABLE ...?!
  • 你能显示SqlConstant类吗?

标签: java android database sqlite


【解决方案1】:

android.database.sqlite.SQLiteException:“创建”附近:语法错误 (代码1):,编译时:DROP TABLE IF EXISTS 创建表 user_personal_detail..

这里,表名不见了

您需要删除 SqlConstant.DROP_TABLE+

或者使用,

 SqlConstant.DROP_TABLE+ "tablename ;"+SqlConstant.CREATE_USER_PERSONAL_DETAILS)

你的命令应该是这样的,

如果存在则删除表 user_personal_detail ;创建表 user_personal_detail...

对所有表格都这样做。

【讨论】:

  • 如果存在tablename,则需要使用drop table。在您的代码表名称丢失
  • 添加表名后是否出现异常?
  • 同样的异常即将到来
  • 请发布您现在得到的异常。还要清理你的项目,使缓存无效,然后调试应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2018-10-14
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
相关资源
最近更新 更多