gpt4 book ai didi

android - onCreate() 不被 getWritableDatabase() 调用

转载 作者:IT王子 更新时间:2023-10-29 06:19:54 24 4
gpt4 key购买 nike

我正在我的 android 应用程序中编写一个数据库,但我的表没有被创建。我在我的 onCreate 方法中添加了断点,我的 getWriteableDatabase 和 getWritableDatabase 被调用,但 onCreate 没有被调用。

package com.fslade.app;

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

public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "applicationdata";
private static final int DATABASE_VERSION = 1;
public static final String DATABASE_TABLE = "peopleT";

// Database creation sql statement
private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " (_id integer primary key autoincrement, "
+ "company_name text not null, name text not null, city text not null, vertical text not null, title text not null, email text not null, bio text not null, photo text not null, status text not null);";

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

// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}

// Method is called during an upgrade of the database, e.g. if you increase
// the database version
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion,
int newVersion) {
Log.w(DatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS todo");
onCreate(database);
}
}

在我的数据库助手中,我调用了 getWriteableDatabse():

package com.fslade.app;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class ContentStorageHelper {
public static final String KEY_ID = "_id";
public static final String KEY_COMPANY_NAME = "company_name";
public static final String KEY_PERSON_NAME = "name";
public static final String KEY_CITY = "city";
public static final String KEY_VERTICAL = "vertical";
public static final String KEY_TITLE = "title";
public static final String KEY_EMAIL = "email";
public static final String KEY_BIO = "bio";
public static final String KEY_PHOTO = "photo";
public static final String KEY_STATUS = "status";

private static final String[] COLUMNS = { KEY_ID, KEY_COMPANY_NAME,
KEY_PERSON_NAME, KEY_CITY, KEY_VERTICAL, KEY_TITLE, KEY_EMAIL,
KEY_BIO, KEY_PHOTO, KEY_STATUS };

private Context context;
private SQLiteDatabase database;
private DatabaseHelper dbHelper;

public ContentStorageHelper(Context context) {
this.context = context;
}

public ContentStorageHelper open() throws SQLException {
dbHelper = new DatabaseHelper(context);
database = dbHelper.getWritableDatabase();
// dbHelper.onCreate(database);
// I added this onCreate() to see if it helped, but when I ran it
// it said that the database had already been created
return this;
}

public void close() {
dbHelper.close();
}

/**
* Create a new person If the person is successfully created return the new
* rowId for that person, otherwise return a -1 to indicate failure.
*/
public long createPerson(String company_name, String name, String city,
String vertical, String title, String email, String bio,
String photo, String status) {
ContentValues initialValues = createContentValues(company_name, name,
city, vertical, title, email, bio, photo, status);

return database.insert(DatabaseHelper.DATABASE_TABLE, null,
initialValues);
}

/**
* Return a Cursor over the list of all people in the database
*
* @return Cursor over all notes
*/
public Cursor fetchPeopleByVertical(String vertical) {
String selection = KEY_VERTICAL+"="+vertical;
Cursor result = database.query(DatabaseHelper.DATABASE_TABLE, COLUMNS,
selection, null, null, null, null);
return result;
}

private ContentValues createContentValues(String company_name, String name,
String city, String vertical, String title, String email,
String bio, String photo, String status) {
ContentValues values = new ContentValues();
values.put(KEY_COMPANY_NAME, company_name);
values.put(KEY_PERSON_NAME, name);
values.put(KEY_CITY, city);
values.put(KEY_VERTICAL, vertical);
values.put(KEY_TITLE, title);
values.put(KEY_EMAIL, email);
values.put(KEY_BIO, bio);
values.put(KEY_PHOTO, photo);
values.put(KEY_STATUS, status);
System.out.print("test: " + status);
return values;
}
}

最佳答案

创建只发生一次(这就是数据库助手的全部含义)。

您是否检查过您的数据库是否已创建?它位于 /data/data/your.package.name/databases/dbname

如果你在android应用程序设置中清除了你的应用程序数据,你的onCreate应该被再次调用...

关于android - onCreate() 不被 getWritableDatabase() 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7533964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com