我是 Android 新手,我必须创建一个需要使用 SQLite 数据库的应用程序。我对 SQLite 的装备不太好。
你能告诉我这个SQLiteOpenHelper
类的目的和用途,并提供一个简单的数据库创建和插入示例吗?
我是 Android 新手,我必须创建一个需要使用 SQLite 数据库的应用程序。我对 SQLite 的装备不太好。
你能告诉我这个SQLiteOpenHelper
类的目的和用途,并提供一个简单的数据库创建和插入示例吗?
Sqlite 助手类帮助我们管理数据库创建和版本管理。SQLiteOpenHelper 负责所有数据库管理活动。要使用它,
1.OverrideonCreate(), onUpgrade()
的方法SQLiteOpenHelper
。可选择覆盖 onOpen() 方法。
2.使用这个子类创建一个可读或可写的数据库,并使用 SQLiteDatabase 的四个 API 方法insert(), execSQL(), update(), delete()
来创建、读取、更新和删除表的行。
创建 MyEmployees 表并选择和插入记录的示例:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "DBName";
private static final int DATABASE_VERSION = 2;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table MyEmployees
( _id integer primary key,name text not null);";
public MyDatabaseHelper(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,
@Override
public void onUpgrade(SQLiteDatabase database,int oldVersion,int newVersion){
Log.w(MyDatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS MyEmployees");
onCreate(database);
}
}
现在你可以使用这个类,如下所示,
public class MyDB{
private MyDatabaseHelper dbHelper;
private SQLiteDatabase database;
public final static String EMP_TABLE="MyEmployees"; // name of table
public final static String EMP_ID="_id"; // id value for employee
public final static String EMP_NAME="name"; // name of employee
/**
*
* @param context
*/
public MyDB(Context context){
dbHelper = new MyDatabaseHelper(context);
database = dbHelper.getWritableDatabase();
}
public long createRecords(String id, String name){
ContentValues values = new ContentValues();
values.put(EMP_ID, id);
values.put(EMP_NAME, name);
return database.insert(EMP_TABLE, null, values);
}
public Cursor selectRecords() {
String[] cols = new String[] {EMP_ID, EMP_NAME};
Cursor mCursor = database.query(true, EMP_TABLE,cols,null
, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor; // iterate to get each value.
}
}
现在您可以在活动中使用 MyDB 类来进行所有数据库操作。创建记录将帮助您插入值,类似地您可以拥有自己的更新和删除功能。
以下链接我帮助你
数据库助手类:
管理数据库创建和版本管理的助手类。
您创建一个实现和 可选的子类onCreate(SQLiteDatabase)
,并且此类负责打开数据库(如果存在),如果不存在则创建它,并根据需要对其进行升级。事务用于确保数据库始终处于合理状态。onUpgrade(SQLiteDatabase, int, int)
onOpen(SQLiteDatabase)
此类使ContentProvider
实现可以轻松地将数据库的打开和升级推迟到第一次使用,以避免因长时间运行的数据库升级而阻塞应用程序启动。
您需要更多参考此链接Sqlite Helper
DBHelper 类负责处理 sqlite 数据库的打开和关闭以及 sa 创建和更新,关于它是如何工作的一篇不错的文章在这里。当我开始使用 android 时,它非常有用(但是我最近一直在使用 Objective-c,并且忘记了它的大部分用途。
使用 Helper 类,您可以访问 SQLite 数据库,并可以通过覆盖 onCreate() 和 onUpgrade() 方法对其执行各种操作。
http://technologyguid.com/android-sqlite-database-app-example/