安卓轻量型数据库Litepal简单使用

      LitePal数据库简单使用

            To live is to function , that is all there is in living.

                    LitePal是一个Android开源原生库,它使开发者使用SQLite数据库变得非常容易。 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新表,约束操作,聚合功能等等。LitePal的安装也相当简单,3分钟之内就可以将它集成到你的工程里。并且它特别轻量化,远比GreenDao占用更少资源,号称配置几乎为零。

     它能够实现的功能如下:

           1.使用对象关系映射(ORM) 模型。
        2.几乎零配置(只有一个配置文件,该配置文件属性很少)。
        3.自动维护所有表格(比如创建、更改、删除表格)。
        4.提供封装的API,无需写SQL语句。
        5.很棒的集群查询功能。
        6.依然可以选择使用SQL,LitePal提供比原始更易用更好的API接口。     

    接下来开始在自己的工程里面配置litepal。

         第一步:导入依赖包。

       Litepal官方介绍https://github.com/LitePalFramework/LitePal#latest-downloads

        直接在自己的项目的builde.gradle的denpendenceies下导入

//    litepal依赖包导入
    compile 'org.litepal.android:core:1.5.1'
      更加具体


       第二步:创建application继承LitePalApplication


   为什么要这么做尼,接下来请看,litapalApplication里面做了什么

public class LitePalApplication extends Application {

   /**
    * Global application context.
    */
   static Context sContext;

   /**
    * Construct of LitePalApplication. Initialize application context.
    */
   public LitePalApplication() {
      sContext = this;
   }

    /**
     * Deprecated. Use {@link LitePal#initialize(Context)} instead.
     * @param context
    *        Application context.
     */
   @Deprecated
    public static void initialize(Context context) {
        sContext = context;
    }

   /**
    * Get the global application context.
    * 
    * @return Application context.
    * @throws org.litepal.exceptions.GlobalException
    */
   public static Context getContext() {
      if (sContext == null) {
         throw new GlobalException(GlobalException.APPLICATION_CONTEXT_IS_NULL);
      }
      return sContext;
   }

}
  可以发现他就做了一件事情获取上下文。

  第三步,创建表

   litepal创建表非常简单,和我们平时构造一个对象是一样的,只是这个对象需要继承DataSupport


       为什么这么做尼,我复制下DataSupport这个类的介绍

 * CREATE TABLE person (
 *     id integer primary key autoincrement,
 *     age integer, 
 *     name text
 * );
 * </pre>
 * 
 * @author Tony Green
 * @since 1.1
 */
public class DataSupport {
很显然,这个DataSupport在通过我们给对象的属性来映射成表的字段,而表的名称对应的是创建的这个类名(StudentBeanDB)

   第四步,声明数据库名称关联表

   首先我们创建assets数据文件,然后在这个文件夹下创建一个名为LitePal的xml文件

   创建asset文件夹的方法如下


  创建litepal.xml

<litepal>
    <!--创建的数据库名称为demoTest-->
    <dbname value = "demoTest"/>
    <!--数据库版本号-->
    <version value = "1"/>
  <List>
      <!--创建的于demoTest下的StudentBeanDB-->
      <maping class = "com.example.march_day18_litepal_simple_use.StudentBeanDB"/>
  </List>

</litepal>

      到此为止我们的数据库算是创建成功了,接下来我们运行一下看看

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建数据库
        //LitePal.getDatabase();
        Connector.getDataBase();
         initDatas();
    }

    private void initDatas() {
        StudentBeanDB bean;
        for (int i = 0; i < 30; i++) {
              bean = new StudentBeanDB(i,201703180+i,70+i,"胖娃娃"+i+"","少女");
            if(bean.save()){
                Log.i("----->>", "保存成功 ");
            }
        }
    }
}
接下来看logcat


其实,这其中还是遇到了一个问题的,当时是由于在创建litepal.xml文件的时候多打了一个字母,致使litepal不能映射出数据库

ok,接下来对数据库进行增删查改操作。

public void touch(View v){
            List<StudentBeanDB> all = DataSupport.findAll(StudentBeanDB.class);
    switch (v.getId()){
        case R.id.db_add:
            StudentBeanDB newBean = new StudentBeanDB(all.size(), 201703180 + all.size(),70, "新同学——胖娃娃" + all.size() + "", "小处男");
            newBean.save();
            break;
        case R.id.db_delete:
            DataSupport.deleteAll(StudentBeanDB.class,"sName = ?","胖娃娃5");
            break;
        case R.id.db_find:
            mResult.setText(null);
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < all.size(); i++) {
                StudentBeanDB beanDB = all.get(i);
                stringBuilder.append("姓名:"+beanDB.getsName()+"学号:"+beanDB.getsId()+"性别:"+
                                 beanDB.getsSex()+"年级:"+beanDB.getsClass()+"成绩:"+
                                  beanDB.getsGread()+"\n");
                }
                mResult.setText(stringBuilder.toString());
            break;
        case R.id.db_re:
            ContentValues contentValues = new ContentValues();
            contentValues.put("sName","小明要开车");
            DataSupport.updateAll(StudentBeanDB.class,contentValues," sName = ?","胖娃娃11");
            break;

    }
}
一· 查讯

 DataSupport.findAll(StudentBeanDB.class)


二·增添数据

StudentBeanDB newBean = new StudentBeanDB(all.size(), 201703180 + all.size(),70, "新同学——胖娃娃" + all.size() + "", "小处男");
newBean.save();


三·删除数据

DataSupport.deleteAll(StudentBeanDB.class,"sName = ?","胖娃娃5");

在这部操作的时候其实使出了一个错的,错误日志如下:

为什么尼,我在查询某个固定的姓名时使用了“where sName = ? ",因为这个where出了错,这个是litepal提供的方便,但是太方便就会。。。

四·修改数据

ContentValues contentValues = new ContentValues();
contentValues.put("sName","小明要开车");
DataSupport.updateAll(StudentBeanDB.class,contentValues," sName = ?","胖娃娃11");
其中ContenValues只是系统提供的一个HashMap。


以上便是litepal的简单使用,至于多表连接,多表查询,将在以后介绍。

奉上郭霖的相关讲解传送门litepal郭郭

      一家之言,有误望君扶正,多谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值