Android 第十五课 如何使用LitePal从SQLite数据库中删除数据(十四课用来保留讲解如何向SQLite数据库中存入数据)

使用LitePal删除数据的方式主要有两种,第一种就是直接调用已存对象的delete()方法,所谓已存储对象就是调用过save()方法的对象,或者说是通过LitePal提供的查询API查出来的对象,都是可以直接使用delete方法来删除对象的。这是比较简单的方式。我演示用另一种删除数据的方式。

接下来, 我们设定一个输入框和一个按钮,删除输入框中指定的数据。其中我们需要获取输入框的实例,即你输入的内容,然后我们根据你输入的内容,去删除可以和数据库内匹配的对象。(发现删除数据后,再添加数据,sqlite中的id并不是从1开始,而是从上一回的数据的外下排,比如没删除前,表中最后一个对象的id为39,删除表内所有数据后,新增一个对象的id为40,但是此时表内只有一个数据对象)。

package com.example.testappb;

import android.content.Intent;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.litepal.crud.DataSupport;

import java.util.List;

public class RegisterActivity extends AppCompatActivity {

    private EditText DtelEdit;
    private EditText DpasswordEdit;



    private Button querenzhuce;
    private Button zhucefanhui;

    //声明删除信息
    private EditText edittext_shanchu;
    private Button   button_shanchu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register_layout);

        //获取输入框的实例
        DtelEdit = (EditText)findViewById(R.id.edittext_Dtel);
        DpasswordEdit = (EditText)findViewById(R.id.edittext_Dpassword);

        ....

        edittext_shanchu = (EditText)findViewById(R.id.edittext_shanchu);
        button_shanchu = (Button)findViewById(R.id.button_shanchu);

        button_shanchu.setOnClickListener(new View.OnClickListener() {

            //获取输入的信息后转化为字符串
            String edittextshanchu = DtelEdit.toString();
            @Override

            public void onClick(View view) {
                //
               // List<Driveruser> driveruers = DataSupport.findAll(Driveruser.class);
                //for(Driveruser driveruser:driveruers) {
                    //if ((driveruser.getDtel().toString()).equals(edittextshanchu)) {

                    //DataSupport.deleteAll(Driveruser.class,"Dtel ==?","edittextshanchu");
                    //driveruser.save();
                    DataSupport.deleteAll(Driveruser.class);

                    Toast.makeText(RegisterActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
                    return;


            }
        });
    }
}

鉴于我们之前设置表内字段数据类型的局限性,我们想要从Sqlite数据中删除某一个特定数据的话,现在还无法实现,因为我之前建立的Driveruser表内只有两个字段,一个是手机号(Dtel)和密码(Dpassword),这两个字段都是设置为String类型,String类型的数据来匹配的话,是通过equals方法来比较的,但是又由于deleteAll()方法内参数的限制,我们暂时还无法实现删除某一特定的对象,不过我们可以删除整个表内的数据。就如DataSupport.delteAll(Driveruser.class)。delete方法内没有设置其参数。就表示要删除Driveruser表中所有的数据。和updateAll()方法是类似的。其中delete()方法中有三个参数,第一个参数用于指定删除哪张表中的数据,Driveruser.class就意味着删除Book表中的数据。第二个参数用于指定约束条件。例如:DataSupport.deleteAll(Book.class,"price<?","15");意思就是:删除Book表中price低于15的书。其中?是一个占位符。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值