【问题标题】:No such table found SQLITE Error没有找到这样的表 SQLITE 错误
【发布时间】:2017-10-12 17:52:39
【问题描述】:

SQLiteOpenHelper

public class DataDB extends SQLiteOpenHelper {

    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "Datas";
    private static final String SQL_CREATE_ENTRIES =
            "CREATE TABLE " + FeedEntry.TABLE_NAME + " (" +
                    FeedEntry.COLUMN_NAME_ID + " INTEGER PRIMARY KEY," +
                    FeedEntry.COLUMN_NAME_NAME + " TEXT," +
                    FeedEntry.COLUMN_NAME_DESC + " TEXT," +
                    FeedEntry.COLUMN_NAME_IMG_URL + " TEXT," +
                    FeedEntry.COLUMN_NAME_PRICE + " TEXT);";

    private static final String SQL_DELETE_ENTRIES =
            "DROP TABLE IF EXISTS " + FeedEntry.TABLE_NAME;

    public DataDB(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        Log.e("Syntax",SQL_CREATE_ENTRIES);
        sqLiteDatabase.execSQL(SQL_CREATE_ENTRIES);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL(SQL_DELETE_ENTRIES);
        onCreate(sqLiteDatabase);
    }

    @Override
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }

}

插入内容的代码

ContentValues values = new ContentValues();

values.put(FeedEntry.COLUMN_NAME_ID, Integer.parseInt(oneObject.getString("id")));
values.put(FeedEntry.COLUMN_NAME_NAME, oneObject.getString("name"));
values.put(FeedEntry.COLUMN_NAME_DESC, oneObject.getString("desc"));
values.put(FeedEntry.COLUMN_NAME_IMG_URL, oneObject.getString("img_url"));
values.put(FeedEntry.COLUMN_NAME_PRICE, oneObject.getString("price"));

db.insert(FeedEntry.TABLE_NAME, null, values);

错误信息

10-12 23:20:05.244 19171-19171/com.dkartindia.dkart E/SQLiteLog: (1) no such table: category
10-12 23:20:05.250 19171-19171/com.dkartindia.dkart E/SQLiteDatabase: Error inserting name=VEGETABLES0 price=20.00 description=King prawns are the most popular species of prawn in Australia, due no doubt to their rich flavour and moist flesh. img_url=http://www.dkartindia.com/image.jpg id=0
                                                                      android.database.sqlite.SQLiteException: no such table: category (code 1): , while compiling: INSERT INTO category(name,price,description,img_url,id) VALUES (?,?,?,?,?)
                                                                          at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                          at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:898)
                                                                          at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:509)
                                                                          at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                          at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                          at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                                          at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1499)
                                                                          at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1371)
                                                                          at com.dkartindia.dkart.Activities.Home$2.onResponse(Home.java:114)
                                                                          at com.dkartindia.dkart.Activities.Home$2.onResponse(Home.java:85)
                                                                          at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
                                                                          at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
                                                                          at android.os.Handler.handleCallback(Handler.java:815)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                          at android.os.Looper.loop(Looper.java:194)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5717)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:372)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

【问题讨论】:

  • no such table: category 未找到表名。
  • 是的,我知道。但是类别表没有创建。 public static final String TABLE_NAME = "category"; @IntelliJAmiya
  • 卸载应用也会出现同样的问题?并再次运行。
  • @IntelliJAmiya 最后我发现了问题。在我的代码的某个地方有一个 drop 命令。这就是为什么在创建表后它正在下降的原因。谢谢你帮助我。
  • 确实如此。前进,

标签: android sqlite android-sqlite


【解决方案1】:

问题在于我的代码中有一个Drop Command。这就是为什么在创建表后它正在下降的原因。通过删除线解决了我的问题。

【讨论】:

  • 很高兴看到你解决了这个问题。
猜你喜欢
  • 2010-12-29
  • 1970-01-01
  • 2016-11-18
  • 2015-05-11
  • 1970-01-01
  • 2017-02-09
  • 2015-09-07
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多