sqlite错误代码= 1,msg =没有这样的表

时间:2011-10-25 11:04:06

标签: android sqlite

我正在使用以下代码来创建数据库连接。但是没有创建表。

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.widget.TextView;

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "notification.db";
    public static final String Title = "Title";
    public static final String NotificationId = "NotificationId";
    public static final String Subject = "Subject";
    public static final String TABLE = "notification";
    public static final String Flag = "Flag";



    public DatabaseHelper(Context context)
    {
        super(context,DATABASE_NAME,null,1);
        android.util.Log.v("DatabaseHelper","Constructor called");
    }

    public void onCreate(SQLiteDatabase db)
    {
        android.util.Log.v("SQLiteDatabase","SQLiteDatabase create called");
        String sql = "create table notification"  + "( " + BaseColumns._ID
        + " integer primary key autoincrement, "+ NotificationId + " text, " + Title + " text, " + Subject + " text, "+ Flag + " text);"
        ;
        db.execSQL(sql);


    }


}

这是我在其他课程中的插入功能

protected void insert(String notificationid,String title, String subject,String flag) {
        // TODO Auto-generated method stub

            eventsData = new DatabaseHelper(this);
            Log.i("insert", "inside insert");
            Log.i(TAG, "insert"+notificationid);
            Log.i(TAG, "insert"+title);
            Log.i(TAG, "insert"+subject);
            Log.i(TAG, "insert"+flag);
            SQLiteDatabase db = eventsData.getWritableDatabase();
            android.util.Log.v("insert","SQLiteDatabase called");
            ContentValues values = new ContentValues();
            android.util.Log.v("insert","ContentValues called");
            values.put(DatabaseHelper.NotificationId, notificationid);
            values.put(DatabaseHelper.Title, title);
            values.put(DatabaseHelper.Subject, subject);
            values.put(DatabaseHelper.Flag, flag);
            android.util.Log.v("insert","after values.put");
            db.insert(DatabaseHelper.TABLE, null, values);
            Log.i("insert", "after insert");

    }

插入数据时我收到错误没有找到这样的表。但是如果我从控制台shell创建表通知,相同的代码工作正常。任何人都可以帮助我。 感谢。

3 个答案:

答案 0 :(得分:13)

我注意到你没有实现onUpgrade。是否有可能第一次运行此数据库时创建了数据库,但表逻辑未实现?也许尝试通过设置清除数据 - >应用程序 - >管理应用程序只是一个猜测

答案 1 :(得分:1)

未调用onCreate方法。创建一个名为say ... createDatabase的方法,并将onCreate代码放在那里,然后将createDatabase调用为

DataBaseHelper myDataBaseHelper;
myDataBaseHelper.createDatabase();

onCreate通常与onUpgrade方法一起使用。

答案 2 :(得分:1)

如果您要对数据库进行更改,则必须卸载应用程序..卸载应用程序并重新安装。