【问题标题】:error:no such table错误:没有这样的表
【发布时间】:2012-07-02 07:27:31
【问题描述】:

为什么会出现这个错误。我已经有一个数据库。然后我添加表并在其中插入一个项目。我控制这个步骤,当我插入项目时没有错误。但是当我想阅读我将项目放在我的新表中时,会发生这个错误。它说我没有找到。我在模拟器中控制它,我将 .db 推送到我的桌面并打开它。我在其中看到,是的,没有新表。但它必须是。

当我删除应用程序并重新安装我的应用程序时没有任何问题,表格就在那里。但我不想重新安装我想升级。我可以为此做些什么?

package xxxxx;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DB_NAME="xxx.db";
    public static final String TABLE_NAME="already_exist";
    public static final String TABLE_NAME2="already_exist2";
    public static final String TABLE_NAME3="new_table";
    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, 2);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_NAME + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, s TEXT)");
        db.execSQL("CREATE TABLE " + TABLE_NAME2 + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, a TEXT,v TEXT)");
        db.execSQL("CREATE TABLE " + TABLE_NAME3 + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, x TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

       }

}

【问题讨论】:

  • 贴出logcat和一些代码
  • 我编辑我的问题。并且 logcat 说没有这样的表(它说是新表)
  • 我将我的数据库版本设置为 2,但没有修复我的错误。
  • 如果你在模拟器中运行它。只需通过您的 DDMS 验证该表是否存在..
  • 我编辑了我的问题。看我尝试,我将 onupgrade 块写入我的查询,但它不再起作用。

标签: android sqlite


【解决方案1】:
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
arg0.execSQL("CREATE TABLE " + TABLE_NAME3 + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, x TEXT)");
   }


@Override
public void onDowngrade(SQLiteDatabase arg0, int arg1, int arg2) {
arg0.execSQL("CREATE TABLE " + TABLE_NAME3 + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, x TEXT)");
   }

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 2023-03-08
    • 2018-06-21
    • 2010-12-29
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多