android sqlite 示例,android SQLite数据库使用示例
數據庫的操作,需用到數據庫類SQLiteDatabase,重寫管理員類SQLiteOpenHelper,用Cursor查詢數據
一、操作數據庫的輔助類,包含打開、關閉、增刪改查方法
//自定義的數據庫的接口,其中包含SQLiteHelper
public class NotesDbAdapter
{
//創建數據庫所需語句及相關字符串
private static final String DATABASE_NAME = "note.db";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_TABLE = "note";
private static final String DATABASE_CREATE =
"create table note("
+"_id INTEGER PRIMARY KEY,"
+"note TEXT,"
+"date TEXT,"
+"created INTEGER,"
+"modified INTEGER"
+");";
//數據庫對象
private SQLiteDatabase db;
//定義數據庫管理員類
private static class DatabaseHelper extends
SQLiteOpenHelper
{
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
onCreate(db);
}
}
//抽象界面
private Context mCtx =
null;
//數據庫管理員對象
private DatabaseHelper dbHelper ;
//數據庫各列名稱
public static final String KEY_ROWID = "_id";
public static final String KEY_NOTE = "note";
public static final String KEY_DATE = "date";
public static final String KEY_CREATED = "created";
public NotesDbAdapter(Context ctx) {
this.mCtx = ctx;
}
//打開數據庫
public NotesDbAdapter open () throws SQLException {
dbHelper = new DatabaseHelper(mCtx);
db = dbHelper.getWritableDatabase();
return this;
}
//關閉數據庫
public void close() {
dbHelper.close();
}
//查詢所有項目,返回一個Cursor
public Cursor getall()
{
return db.query(DATABASE_TABLE,
new String[] {KEY_ROWID, KEY_NOTE, KEY_DATE,
KEY_CREATED},
null, null, null, null, null);
}
// 新增一項
public long create(String Note,String mDate) {
Date now = new Date();
ContentValues args = new ContentValues();
args.put(KEY_NOTE, Note);
args.put(KEY_DATE, mDate);
args.put(KEY_CREATED, now.getTime());
return db.insert(DATABASE_TABLE, null, args);
}
//刪除一項
public boolean delete(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null)
> 0;
}
//查詢一項
public Cursor get(long rowId) throws SQLException
{
Cursor mCursor = db.query(true,
DATABASE_TABLE,
new String[] {KEY_ROWID, KEY_NOTE, KEY_DATE,
KEY_CREATED},
KEY_ROWID + "=" + rowId,
null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
//修改一項
public boolean update(long rowId, String note,String
date)
{
ContentValues args = new ContentValues();
args.put(KEY_NOTE, note);
args.put(KEY_DATE, date);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId,
null) > 0;
}
}
二、在主類中通過寫好的輔助類操作數據庫
private NotesDbAdapter mDbHelper;
private Cursor mNotesCursor;
//用自定義的數據庫接口提供的方法打開數據庫
mDbHelper = new NotesDbAdapter(this);
mDbHelper.open();
//獲取cursor,當需要表中數據時再通過cursor訪問
mNotesCursor = mDbHelper.getall();
startManagingCursor(mNotesCursor);
//實例化各list存儲數據庫各列內容
aryListNoteContent=new
ArrayList();
aryListNoteDate=new
ArrayList();
aryListNoteID=new
ArrayList();
linkListNoteIcon=new
LinkedList();
//先用Cursor獲取內容,裝入ArrayList,最后關閉cursor
try
{
if(mNotesCursor.moveToFirst())
{
do
{
//獲取數據庫rowID,以便操作數據庫
String noteId=mNotesCursor.getString(0);
String noteContent=mNotesCursor.getString(1);
String noteDate=mNotesCursor.getString(2);
aryListNoteID.add(noteId);
aryListNoteContent.add(noteContent);
aryListNoteDate.add(noteDate);
linkListNoteIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.icon));
}while(mNotesCursor.moveToNext());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
mNotesCursor.close();
}
//刪除一項
String RowId=aryListNoteID.get(info.position);
mDbHelper.delete(Long.parseLong(RowId));
//新增一項
mDbHelper.create(String,String);
//查詢一項
//若該行id不為空,返回該行cursor,根據cursor讀取內容,讀取完畢關閉cursor
if (mRowId != null) {
Cursor cursor = mDbHelper.get(mRowId);
startManagingCursor(cursor);
try
{
mEditText.setText(cursor.getString(
cursor.getColumnIndexOrThrow(NotesDbAdapter.KEY_NOTE)
));
} catch (IllegalArgumentExceptione) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
cursor.close();
}
}
//修改一項
mDbHelper.update(mRowId, String,String);
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android sqlite 示例,android SQLite数据库使用示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server 2008R2安装详
- 下一篇: android 点击空白退出,Andro