Android游戏开发之数据库SQLite 详细介绍

数据库SQLite介绍
   
数据库最经典的四个操作 添加、删除、修改、查找,在处理大量数据的时候使用数据库可以帮我们迅速定位当前须要处理的数据,举个例子 好比现在要实现一个搜索功能 用数据库的话只须要其中一个搜索条件 一个数据库语句就可以迅速的在N条数据中找到我们需要的数据,如果不使用数据库那么查找起来会非常麻烦,效率大打折扣,所以在处理大量数据的时候使用数据库是明确的选择,在Android的开发中使用的数据库是SQLite ,它是一个轻量级的数据库 、非常小 、 移植性好、效率高、可靠 ,嵌入式设备因为受到硬件条件的限制所以非常适合使用 SQLite  数据库。


创建与删除数据库

封装一个类去继承SQLiteOpenHelper  在构造函数中传入数据库名称与数据库版本号,数据库被创建的时候会调用onCreate(SQLiteDatabase db) 方法,数据库版本号发生改变的时候会调用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,可以方便的对软件游戏升级后做出相应处理避免覆盖安装数据库发生改变产生的错误。调用SQLiteOpenHelper  的getReadableDatabase()方法去创建数据库,如果数据库不存在则创建 并且返回SQLiteDatabase对象,如果数据库存在则不创建只返回SQLiteDatabase对象。调用deleteDatabase(DATABASE_NAME)方法 传入数据库名称则可删除数据库。


Android游戏开发之数据库SQLite 详细介绍


       封装了一个DatabaseHelper类继承SQLiteOpenHelper 我使用了设计模式中的单例模式来处理这个类,这里说一下单例模式 单例模式是常见的代码设计模式之一 它的好处是在于避免在内存中频繁的实例化所以将它的对象写成static 静态 这样它的对象就只有一份存在静态内存区使用的时候只须要通过getInstance()就可以直接拿到这个静态对象。
 
  1. public class DatabaseHelper extends SQLiteOpenHelper {  
  2.     private static DatabaseHelper mInstance = null;  
  3.   
  4.     /** 数据库名称 **/  
  5.     public static final String DATABASE_NAME = "xys.db";  
  6.   
  7.     /** 数据库版本号 **/  
  8.     private static final int DATABASE_VERSION = 1;  
  9.   
  10.     /**数据库SQL语句 添加一个表**/  
  11.     private static final String NAME_TABLE_CREATE = "create table test("  
  12.         + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+"hp INTEGER DEFAULT 100,""mp INTEGER DEFAULT 100,"  
  13.         + "number INTEGER);";  
  14.   
  15.     DatabaseHelper(Context context) {  
  16.     super(context, DATABASE_NAME, null, DATABASE_VERSION);  
  17.     }  
  18.       
  19.      /**单例模式**/  
  20.     static synchronized DatabaseHelper getInstance(Context context) {  
  21.     if (mInstance == null) {  
  22.         mInstance = new DatabaseHelper(context);  
  23.     }  
  24.     return mInstance;  
  25.     }  
  26.   
  27.     @Override  
  28.     public void onCreate(SQLiteDatabase db) {  
  29.     /**向数据中添加表**/  
  30.     db.execSQL(NAME_TABLE_CREATE);  
  31.     }  
  32.   
  33.     @Override  
  34.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  35.     /**可以拿到当前数据库的版本信息 与之前数据库的版本信息   用来更新数据库**/   
  36.     }  
  37.   
  38.       
  39.     /** 
  40.      * 删除数据库 
  41.      * @param context 
  42.      * @return 
  43.      */  
  44.     public boolean deleteDatabase(Context context) {  
  45.     return context.deleteDatabase(DATABASE_NAME);  
  46.     }  
  47. }  

在这个类中使用DatabaseHelper对象 实现创建与删除数据库、
 
  1. public class NewSQLite extends Activity {  
  2.     DatabaseHelper mDbHelper = null;  
  3.     SQLiteDatabase mDb = null;  
  4.     Context mContext = null;  
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.     setContentView(R.layout.create_sql);  
  8.     mContext = this;  
  9.     //创建DatabaseHelper对象         
  10.     mDbHelper = DatabaseHelper.getInstance(mContext);  
  11.     //调用getReadableDatabase方法如果数据库不存在 则创建  如果存在则打开   
  12.     mDb= mDbHelper.getReadableDatabase();    
  13.   
  14.     Button button0 = (Button)findViewById(R.id.createDateBase);  
  15.     button0.setOnClickListener(new OnClickListener() {  
  16.           
  17.         @Override  
  18.         public void onClick(View arg0) {  
  19.   
  20.         Toast.makeText(NewSQLite.this"成功创建数据库", Toast.LENGTH_LONG).show();    
  21.         }  
  22.     });  
  23.     Button button1 = (Button)findViewById(R.id.deleteDateBase);  
  24.     button1.setOnClickListener(new OnClickListener() {  
  25.           
  26.         @Override  
  27.         public void onClick(View arg0) {  
  28.         mDbHelper = DatabaseHelper.getInstance(mContext);  
  29.         // 调用getReadableDatabase方法如果数据库不存在 则创建 如果存在则打开   
  30.         mDb = mDbHelper.getReadableDatabase();  
  31.         // 关闭数据库   
  32.         mDbHelper.close();  
  33.         // 删除数据库   
  34.         mDbHelper.deleteDatabase(mContext);  
  35.         Toast.makeText(NewSQLite.this"成功删除数据库", Toast.LENGTH_LONG).show();    
  36.         }  
  37.     });  
  38.       
  39.       
  40.       
  41.     super.onCreate(savedInstanceState);  
  42.     }  
  43.   
  44. }  
创建的数据库会被保存在当前项目中 databases 路径下 具体如图所示


Android游戏开发之数据库SQLite 详细介绍



 

相关推荐