谁能解释一下android数据库创建数据库时的工作流程
流动的包是关于数据库连接类的。它创建一个数据库,并包含一些其他方法。但我不太清楚它是如何工作的,以及工作流程是什么。有人可以向我解释一下吗?
package panda.com.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.*;
import android.util.Log;
import android.database.sqlite.*;
public class DBAdapter{
public static final String KEY_ROWID = "_id";
public static final String KEY_ISBN = "isbn";
public static final String KEY_TITLE = "title";
public static final String KEY_PUBLISHER = "publisher";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "books";
private static final String DATABASE_TABLE = "titles";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table titles (_id integer primary key autoincrement, "
+ "isbn text not null, title text not null, "
+ "publisher text not null);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx){
this.context=ctx;
DBHelper=new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
Log.w(TAG, "Upgrading database from version " + oldVersion + "to" + newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
public DBAdapter open() throws SQLException
{
db=DBHelper.getWritableDatabase();
return this;
}
public void close(){
DBHelper.close();
}
public long insertTitle(String isbn, String title, String publisher){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_ISBN, isbn);
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_PUBLISHER, publisher);
return db.insert(DATABASE_TABLE, null, initialValues);
}
public boolean deleteTitle(long rowId){
return db.delete(DATABASE_TABLE, KEY_ROWID+"="+rowId, null)>0;
}
public Cursor getAlltitles(){
return db.query(DATABASE_TABLE, new String[]{
KEY_ROWID,
KEY_ISBN,
KEY_TITLE,
KEY_PUBLISHER
}, null, null, null, null, null);
}
public Cursor getTitle(long rowId) throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[]{
KEY_ROWID,
KEY_ISBN,
KEY_TITLE,
KEY_PUBLISHER
}, KEY_ROWID+"="+rowId, null, null, null, null, null);
if(mCursor != null){
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateTitle(long rowId, String isbn,String title,String publisher)
{
ContentValues args=new ContentValues();
args.put(KEY_ISBN, title);
args.put(KEY_TITLE, title);
args.put(KEY_PUBLISHER, publisher);
return db.update(DATABASE_TABLE, args, KEY_ROWID+"="+rowId, null)>0;
}
}
The flowing package is about a database connection class. It create a database, and contains some other methods. But I am not really clear how it works, and what the workflow is.Can anyone explain it to me?
package panda.com.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.*;
import android.util.Log;
import android.database.sqlite.*;
public class DBAdapter{
public static final String KEY_ROWID = "_id";
public static final String KEY_ISBN = "isbn";
public static final String KEY_TITLE = "title";
public static final String KEY_PUBLISHER = "publisher";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "books";
private static final String DATABASE_TABLE = "titles";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table titles (_id integer primary key autoincrement, "
+ "isbn text not null, title text not null, "
+ "publisher text not null);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx){
this.context=ctx;
DBHelper=new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
Log.w(TAG, "Upgrading database from version " + oldVersion + "to" + newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
public DBAdapter open() throws SQLException
{
db=DBHelper.getWritableDatabase();
return this;
}
public void close(){
DBHelper.close();
}
public long insertTitle(String isbn, String title, String publisher){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_ISBN, isbn);
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_PUBLISHER, publisher);
return db.insert(DATABASE_TABLE, null, initialValues);
}
public boolean deleteTitle(long rowId){
return db.delete(DATABASE_TABLE, KEY_ROWID+"="+rowId, null)>0;
}
public Cursor getAlltitles(){
return db.query(DATABASE_TABLE, new String[]{
KEY_ROWID,
KEY_ISBN,
KEY_TITLE,
KEY_PUBLISHER
}, null, null, null, null, null);
}
public Cursor getTitle(long rowId) throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[]{
KEY_ROWID,
KEY_ISBN,
KEY_TITLE,
KEY_PUBLISHER
}, KEY_ROWID+"="+rowId, null, null, null, null, null);
if(mCursor != null){
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateTitle(long rowId, String isbn,String title,String publisher)
{
ContentValues args=new ContentValues();
args.put(KEY_ISBN, title);
args.put(KEY_TITLE, title);
args.put(KEY_PUBLISHER, publisher);
return db.update(DATABASE_TABLE, args, KEY_ROWID+"="+rowId, null)>0;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您有 2 个类 -
DatabaseHelper - 此类负责创建您的数据库并在需要时升级它(如果 newVersion > oldVersion,onUpgrade 方法将执行)。
DBAdapter 类包含用于从数据库插入、更新和获取记录的方法。这些方法与它们计划使用的特定数据库相关,而不是 DatabaseHelper 方法,后者是 sqlite DB 的通用方法。
我希望它能帮助你
You have 2 classes -
DatabaseHelper - this class is responsible for creating Your db and upgrading it if needed (onUpgrade method will execute if newVersion > oldVersion).
DBAdapter class contains method for inserting, updating and fetching records from the DB. These methods are relevant for the specific DB they were planned to work with, as opposed to DatabaseHelper methods, which are generic to sqlite DB.
I hope it helps You