数据库SQLite介绍
数据库最经典的四个操作 添加、删除、修改、查找,在处理大量数据的时候使用数据库可以帮我们迅速定位当前须要处理的数据,举个例子 好比现在要实现一个搜索功能 用数据库的话只须要其中一个搜索条件 一个数据库语句就可以迅速的在N条数据中找到我们需要的数据,如果不使用数据库那么查找起来会非常麻烦,效率大打折扣,所以在处理大量数据的时候使用数据库是明确的选择,在Android的开发中使用的数据库是SQLite ,它是一个轻量级的数据库 、非常小 、 移植性好、效率高、可靠 ,嵌入式设备因为受到硬件条件的限制所以非常适合使用 SQLite 数据库。
创建与删除数据库
封装一个类去继承SQLiteOpenHelper 在构造函数中传入数据库名称与数据库版本号,数据库被创建的时候会调用onCreate(SQLiteDatabase db) 方法,数据库版本号发生改变的时候会调用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,可以方便的对软件游戏升级后做出相应处理避免覆盖安装数据库发生改变产生的错误。调用SQLiteOpenHelper 的getReadableDatabase()方法去创建数据库,如果数据库不存在则创建 并且返回SQLiteDatabase对象,如果数据库存在则不创建只返回SQLiteDatabase对象。调用deleteDatabase(DATABASE_NAME)方法 传入数据库名称则可删除数据库。
封装了一个DatabaseHelper类继承SQLiteOpenHelper 我使用了设计模式中的单例模式来处理这个类,这里说一下单例模式 单例模式是常见的代码设计模式之一 它的好处是在于避免在内存中频繁的实例化所以将它的对象写成static 静态 这样它的对象就只有一份存在静态内存区使用的时候只须要通过getInstance()就可以直接拿到这个静态对象。
- public class DatabaseHelper extends SQLiteOpenHelper {
- private static DatabaseHelper mInstance = null;
-
-
- public static final String DATABASE_NAME = "xys.db";
-
-
- private static final int DATABASE_VERSION = 1;
-
-
- private static final String NAME_TABLE_CREATE = "create table test("
- + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+"hp INTEGER DEFAULT 100,"+ "mp INTEGER DEFAULT 100,"
- + "number INTEGER);";
-
- DatabaseHelper(Context context) {
- super(context, DATABASE_NAME, null, DATABASE_VERSION);
- }
-
-
- static synchronized DatabaseHelper getInstance(Context context) {
- if (mInstance == null) {
- mInstance = new DatabaseHelper(context);
- }
- return mInstance;
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
-
- db.execSQL(NAME_TABLE_CREATE);
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-
- }
-
-
-
-
-
-
-
- public boolean deleteDatabase(Context context) {
- return context.deleteDatabase(DATABASE_NAME);
- }
- }
在这个类中使用DatabaseHelper对象 实现创建与删除数据库、- public class NewSQLite extends Activity {
- DatabaseHelper mDbHelper = null;
- SQLiteDatabase mDb = null;
- Context mContext = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- setContentView(R.layout.create_sql);
- mContext = this;
-
- mDbHelper = DatabaseHelper.getInstance(mContext);
-
- mDb= mDbHelper.getReadableDatabase();
-
- Button button0 = (Button)findViewById(R.id.createDateBase);
- button0.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
-
- Toast.makeText(NewSQLite.this, "成功创建数据库", Toast.LENGTH_LONG).show();
- }
- });
- Button button1 = (Button)findViewById(R.id.deleteDateBase);
- button1.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
- mDbHelper = DatabaseHelper.getInstance(mContext);
-
- mDb = mDbHelper.getReadableDatabase();
-
- mDbHelper.close();
-
- mDbHelper.deleteDatabase(mContext);
- Toast.makeText(NewSQLite.this, "成功删除数据库", Toast.LENGTH_LONG).show();
- }
- });
-
-
-
- super.onCreate(savedInstanceState);
- }
-
- }
创建的数据库会被保存在当前项目中 databases 路径下 具体如图所示