粗略的记录一下Android数据库的处理方式。android中本地存储数据分为4种:SharePreference、SQLite、Content Provider和File,都是存放于“data/data/程序包名”目录下。可以看出,android对于数据,基本上都是私有化的。
SQLite是一种轻型数据库,目前移动设备端,基本都使用SQLite。更多关于sqlite的使用,就参看这里:http://www.sqlite.org/
Android上使用SQLite的时候,通常会操作两个类:SQLiteDatabase 和 SQLiteOpenHelper
SQLiteOpenHelper类
类的描述:A helper class to manage database creation and version management。可以知道,这个类主要是用来创建数据库以及管理数据库版本更新。实际的应用:
package com.lanyuweng.mibaby.DataUtil; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.lanyuweng.Config.Config; public class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context) { super(context,Config.DBNAME,null,Config.VERSION); } //IF NOT EXISTS public static final String sql_createtable = "CREATE TABLE NoteItems (Note_title varchar, Note_content varchar, Note_create_time datetime)"; public static final String sql_deletetable = "DROP TABLE IF EXISTS NoteItems"; @Override public void onCreate(SQLiteDatabase db) { db.execSQL(sql_createtable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if(newVersion > oldVersion){ db.execSQL(sql_deletetable); }else{ return; } onCreate(db); } }
复写其onCreate方法,在其方法执行数据库创建,同时在onUpgrade方法中对数据库更新进行管理。基本就可以满足基本的功能了,更多的方法就多查询一下文档多了解一点了。
那么实际的数据库操作,就将其放到一个数据库管理文件中,在这个当中呢,可以进行增,删,改,查,或者更多的数据库操作方法。核心的就是使用execSQL(数据库语句),看看下面:
package com.lanyuweng.mibaby.DataUtil; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class DatabaseManager { public SQLiteDatabase sql_db; public DatabaseHelper sql_db_helper; private Cursor cursor; public DatabaseManager(Context context) { sql_db_helper = new DatabaseHelper(context); sql_db = sql_db_helper.getWritableDatabase(); } public void add_NoteItem(String note_title,String note_content,String note_create_time){ String sql = "INSERT INTO NoteItems(Note_title, Note_content, Note_create_time) values"+ "('"+note_title+"','"+note_content+"','"+note_create_time+"')"; sql_db.beginTransaction(); try { sql_db.execSQL(sql); sql_db.setTransactionSuccessful(); } finally{ sql_db.endTransaction(); } } public void del_NoteItem(String note_title){ String sql = "DELETE FROM NoteItems WHERE Note_title= '"+note_title+"'"; sql_db.beginTransaction(); try { sql_db.execSQL(sql); sql_db.setTransactionSuccessful(); } finally{ sql_db.endTransaction(); } } public void modify_NoteIem(String old_note_title,String new_note_title,String note_content,String note_create_time){ String sql = "UPDATE TABLE NoteItems SET Note_title="+new_note_title+", Note_content="+note_content+",note_create_time="+note_create_time+"where Note_title="+old_note_title; sql_db.beginTransaction(); try { sql_db.execSQL(sql); sql_db.setTransactionSuccessful(); } finally{ sql_db.endTransaction(); } } public Cursor search_NoteItem(String note_title){ String sql = "SELECT * FROM NoteItems WHERE Note_title LIKE"+"%"+note_title+"%"; sql_db.beginTransaction(); try { cursor = sql_db.rawQuery(sql, null); sql_db.setTransactionSuccessful(); } finally{ sql_db.endTransaction(); } return cursor; } public Cursor selectAll_NoteItems(){ String sql = "SELECT * FROM NoteItems"; sql_db.beginTransaction(); try { cursor = sql_db.rawQuery(sql, null); } finally{ sql_db.endTransaction(); } return cursor; } public Cursor getLimitItems(int start,int end){ String sql = "SELECT * FROM NoteItems LIMIT "+start+","+end; sql_db.beginTransaction(); try { cursor = sql_db.rawQuery(sql,null); cursor.moveToFirst(); } finally{ sql_db.endTransaction(); } return cursor; } }
以上,实现了对数据库增删改查的逻辑,其中不得不提到一个Cursor类,Cursor类能够方便的操作数据库。更多关于Cursor的使用,推荐一篇文章,Cursor的使用
至此,Android数据库的操作,基本上基础的东西就是这些了,如果有其他的,想到了再补上。
多记录一点,常常回头来看,会进步的。