我正在使用以下代码来创建数据库连接。但是没有创建表。
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创建表通知,相同的代码工作正常。任何人都可以帮助我。 感谢。
答案 0 :(得分:13)
我注意到你没有实现onUpgrade。是否有可能第一次运行此数据库时创建了数据库,但表逻辑未实现?也许尝试通过设置清除数据 - >应用程序 - >管理应用程序只是一个猜测
答案 1 :(得分:1)
未调用onCreate方法。创建一个名为say ... createDatabase的方法,并将onCreate代码放在那里,然后将createDatabase调用为
DataBaseHelper myDataBaseHelper;
myDataBaseHelper.createDatabase();
onCreate通常与onUpgrade方法一起使用。
答案 2 :(得分:1)
如果您要对数据库进行更改,则必须卸载应用程序..卸载应用程序并重新安装。