02-19 16:46:01.677:E / AndroidRuntime(13159):android.database.sqlite.SQLiteException:没有这样的表:notes

时间:2012-02-19 15:57:24

标签: android eclipse sqlite logcat

当我尝试访问一个表时出现此错误:

  

02-19 16:46:01.677:E / AndroidRuntime(13159):android.database.sqlite.SQLiteException:no such table:notes:INSERT INTO notes(user,text)VALUES('john','testingvalue' )

但我创造了这张桌子!我在数据库中有两个表('users'和'notes'),我以相同的方式访问它们,但是当我尝试在表'notes'中插入一个值时,我有这个错误。

这就是代码:

package com.loopr;

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

public class SQL extends SQLiteOpenHelper {

    String createUserTable = "CREATE TABLE users (name TEXT)";
    String createNotesTable = "CREATE TABLE notes (user TEXT, text TEXT)";

    public SQL(Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(createNotesTable);
        db.execSQL(createUserTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int before, int after) {
        //Nothing at the moment
    }

}

我该怎么办?感谢。

2 个答案:

答案 0 :(得分:0)

尝试更改int version并将其放入onUpgrade可覆盖的方法中:

// Drop the old table.
db.execSQL("DROP TABLE IF EXISTS notes");

// Create a new one.
onCreate(db);

答案 1 :(得分:0)

你能做什么?学习在Android上调试。阅读this link处的资料。了解如何使用DDMS的文件资源管理器从模拟器中提取数据库。获得像SQLite Manager(firefox)这样的工具来查看这些数据库 - 这对我帮助很大。此外,您可以使用SQLite Manager在您的数据库上执行原始sql语句,允许您同时制作SQL并进行测试。