- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在我的 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/
我想在手机不在覆盖区域时存储一些数据。当服务恢复时,它将在服务器上上传数据。但数据没有插入。我在网上查了很多教程。但一直都一样。应用程序意外关闭。 LogCat 错误 10-12 12
我正在为 android 应用程序编写一个函数,它可以通过导入最新的 csv 文件来更新 sqlite 数据库。当用户单击该按钮时,程序应该删除旧表并根据最新数据创建另一个新表。第一次按下按钮时,应用
我正在创建一个名为 Mycontacts 的应用程序。这与 youtube 上的视频相同( https://www.youtube.com/watch?v=38DOncHIazs )。 但是这个get
据我所知,调用 SqliteOpendHelper.getWritableDatabase() 总是返回相同的 SQLiteDatabase 实例。那么与之关联的交易是否也不会受到影响? 假设一个单线
我在调用 getWritableDatabase() 时遇到问题。它返回 NullPointerException。最奇怪的是,这个错误是在我注释掉我的 android list 中的几行代码之后才开
我有一个具有以下代码的服务类 - public class ReminderService extends WakeReminderIntentService{ private st
我有一个关于 android 中的 sqlite 数据库的新手问题: 我真的需要在每次操作数据时都检索一个可写数据库吗? 那么我可以这样写一个 DAO 吗: class Dao { p
我正在尝试使用以下代码更新我的数据库表: public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
文档位于 http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#getWritabl
我正在开发一个使用存储特定信息的数据库的项目。数据库对部分程序有效,但对其他程序则无效。当用户第一次启动程序时,他们将看到从数据库中提取的信息,并且他们还可以选择添加新信息。数据库对于这两者都工作得很
好吧,所以我一直在搜索这个问题,我找到了几个我尝试过但没有成功的答案。我注意到,如果我注释掉 getWritableDatabase,应用程序不会崩溃,但它不会完成我想要的操作。 我还引用了这个vid
我正在开发我的第一个 SQLite 数据库应用程序,因为我被困了很长时间,所以我决定在线询问。 由于以下函数,我无法运行我编写的应用程序:Helper.getWritableDatabase(); 没
我正在尝试在我的应用程序中创建与 sqlite 的连接,但是如果我执行该应用程序,在 getWritableDatabase 行中,应用程序将强制关闭,我不明白发生了什么。 DBCore 类: pub
我已经让 Singelton 对象对 SQLiteOpenHelper 进行查询,我在其中保存了 getWriteableDatabase() 的实例。在整个应用程序生命周期中,对于所有 select
我在调用 getWritableDatabase() 时遇到问题。它返回 NullPointerException。最奇怪的是,这个错误是在我注释掉我的 android list 中的几行代码之后才开
此处为 Android 新手。我制作了一个新的 Fragments 应用程序,但无法从 Fragment 访问数据库。 这是类: public class ShopListActivity exten
我有这个代码: // 2. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); Cursor cu
更新 当我尝试从 Activity 调用方法时出现错误: SQLiteDatabase db = null; List r = dbHelper.getAllAlbum(db); 在我的 dbHel
这是我尝试访问数据库的地方: UserDataAdapter dbHelper = new UserDataAdapter(this); dbHelper.open(); dbHelper.creat
我经常收到用户报告此错误。 无法获取可写数据库。 try { //dbOpenHelper is a standard SQLiteOpenHelper dbOpenH
我是一名优秀的程序员,十分优秀!