【问题标题】:How to resolve "no such table: " error in android?如何解决android中的“没有这样的表:”错误?
【发布时间】:2014-12-10 11:37:46
【问题描述】:

当我执行查询时,我得到了这个异常。请找到logcat。

请在此处找到代码。

public static final String CLASS_ID="classid";
public static final String CLASS_NAME="classname";
public static final String TABLE_REMINDMEMASTER="remindmemaster";

public RemindmeDatabase(Context context) {
    super(context, KonnectMeDataBase.DATABASE_NAME, null, 1);
    // TODO Auto-generated constructor stub
}
//create table remindmemaster table
String CREATE_REMINDME_MASTER="CREATE TABLE remindmemaster(id INTEGER PRIMARY KEY AUTOINCREMENT,"
        +"instructions TEXT,rmd_f INTEGER,startdate TEXT,enddate TEXT,timings TEXT,"
        +" pid INTEGER,sync_f INTEGER,capturetime TEXT,serverid TEXT,crte_ts  TEXT , updt_ts TEXT)";    

Logcat:

12-10 16:56:29.093: E/RemindMeDB(25575): remindmemaster Row Inserted at 
12-10 16:56:29.094: E/checkServeridExist(25575): serverid---0

12-10 16:56:29.094: E/checkServeridExist(25575): localServerId---null

12-10 16:56:29.095: E/SQLiteLog(25575): (1) no such table: remindmemaster

12-10 16:56:29.101: E/SQLiteDatabase(25575): Error inserting serverid= updt_ts=2014-12-10 16:56:29 rmd_f=0 startdate=10-12-2014 instructions=hiii capturetime=16:56:29 timings=16:24,16:25, pid=0 crte_ts=2014-12-10 16:56:29 enddate=30-12-2014 sync_f=0
12-10 16:56:29.101: E/SQLiteDatabase(25575): android.database.sqlite.SQLiteException: no such table: remindmemaster (code 1): , while compiling: INSERT INTO remindmemaster(serverid,updt_ts,rmd_f,startdate,instructions,capturetime,timings,pid,crte_ts,enddate,sync_f) VALUES (?,?,?,?,?,?,?,?,?,?,?)
12-10 16:56:29.101: E/SQLiteDatabase(25575):    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
12-10 16:56:29.101: E/SQLiteDatabase(25575):    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)

12-10 16:56:29.101: E/SQLiteDatabase(25575):    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
12-10 16:56:29.101: 
E/SQLiteDatabase(25575):    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)

【问题讨论】:

  • 您缺少调用创建表的代码以及尝试访问它的代码...确保在尝试插入/获取表之前创建表

标签: android sqlite exception


【解决方案1】:

您在设备中安装应用程序一次后添加了此创建表调用,或者它没有正确创建。

在表名和括号之间加一个空格:

String CREATE_REMINDME_MASTER="CREATE TABLE remindmemaster (id INTEGER PRIMARY KEY AUTOINCREMENT,"
        +"instructions TEXT,rmd_f INTEGER,startdate TEXT,enddate TEXT,timings TEXT,"
        +" pid INTEGER,sync_f INTEGER,capturetime TEXT,serverid TEXT,crte_ts  TEXT , updt_ts TEXT)";

另外,清除数据,卸载,然后重新运行应用程序并检查。应该可以的。

希望这会有所帮助。 :)

【讨论】:

  • 您是否尝试过执行 CREATE_REMINDME_MASTER 语句?成功创建的表可能是清除数据或卸载可能会有所帮助。
  • 嗨 laalto,你能检查一下 logcat,然后告诉我有什么问题吗?我们什么时候会收到这种类型的错误。
【解决方案2】:

最后我得到了答案,当数据库字段顺序不匹配并将值发送到数据库字段顺序时,就会出现这种类型的错误。 引发此错误时,请检查这些详细信息。

1) 检查数据库字段和发送方法字段的顺序(插入字段顺序)。

2) 检查这个查询是否被执行。

3) 检查“onCreate(SQLiteDatabase db)”我们的查询是否在此方法中注册。

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2016-06-16
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    相关资源
    最近更新 更多