发表于: 2018-10-23 22:28:10

0 637


一、今天完成的事情

学习SQLite

    之前只是学了SharedPreferences存储,使用方式比较简单,但只适合保存一些简单的数据和键值,当需要存储大量、复杂的关系型数据时,显然
SharedPreference就不适用了,所幸Android内置了SQLite数据库,SQLite是一款轻量级关系型数据库,支持SQL语法,运算速度快,占用资源少,很适合在移动设备上使用,并提供了一个专门的SQLiteOpenHelper类来帮助我们更方便得去操作数据库。

    SQLite的数据类型比较简单,整型:integer,浮点型:real,text:文本类型,blob:二进制类型。

    SQLiteOpenHelper类的构造函数有四个参数,第一个是Conetxt,第二个是数据库名,第三个是允许查询数据库时返回一个自定义Cursor,一般为null,第四个是当前数据库版本号。

public class MyDatabaseHelper extends SQLiteOpenHelper {
   public static final String CREATE_BOOK = "CREATE TABLE Book ("
           + "id integer PRIMARY KEY AUTOINCREMENT, "
           + "author text, "
           + "price real, "
           + "page integer, "
           + "name text)";

   public static final String CREATE_CATEGORY = "CREATE TABLE Category ("
           + "id integer PRIMARY KEY AUTOINCREMENT, "
           + "category_name text, "
           + "category_code integer)";

   private Context mContext;
   public MyDatabaseHelper(Context context, String name,
                   SQLiteDatabase.CursorFactory factory, int version) {
       super(context, name, factory, version);
            mContext = context;
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
       db.execSQL(CREATE_BOOK);
       db.execSQL(CREATE_CATEGORY);
       Toast.makeText(mContext, "创建成功", Toast.LENGTH_SHORT).show();
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       db.execSQL("DROP TABLE IF EXISTS Book");
       db.execSQL("DROP TABLE IF EXISTS Category");
       onCreate(db);
   }
}

      这里面C创建了两个表Book和Category,以Book为例,首先用PRIMARY KEY AUTOINCREMENT将id设为唯一键值,AUTOINCREMENT表示id自增长。此外又创建了四个列,文本型author,浮点型price,整型page,

文本型name,其实就是SQL建表语句。

     onCreate()方法用于建表,传入建表语句就行了。

     onUpgrade()方法用于升级第三个参数表示升级后的数据库版本号。     

db.execSQL("DROP TABLE IF EXISTS Book");

      这一句表示如果存在Book表,就将它删掉,然后调用onCreate()方法重新建表。

     添加数据,逻辑清晰简单,当然也可以用SQL语句来进行操作,对比可以发现使用SQL来操作数据库代码非常短,两种方法各有各的好处。

更改数据:


二、明天计划的事情

      学习内容提供器


三、遇到的问题

    键盘弹出时会把整个界面顶上去

     解决方法是   

 

    主窗口与键盘窗口的交互设置


四、收获

      安卓中SQLite的使用方法




返回列表 返回列表
评论

    分享到