Android开发LitePal的基本操作

LitePal的用法

在Android开发时,对SQLite的用法实在不懂,看了不少资料决定写下这篇博客,目前还是学生,知识点掌握不好,有错误请大佬指出。参考《第一行代码》第二版这本书!!!采用的是书上的例子。

配置LitePal

LitePal 是一款Android数据库框架,将我们平时开发最常用的一些数据库功能进行封装。

1、首先编辑app/build.gradle文件,添加依赖

dependencies {
    //添加依赖
    implementation 'org.litepal.android:core:1.3.2'
}

添加的声明中,1.3.2是版本的意思,我查了很多资料和书,大部分是用下面这种,可能Android studio 版本不同吧。

dependencies {
compile 'org.litepal.android:core:1.3.2'
}

2、这样我们就把LitePal成功引入到了项目中了,接下来需要配置litepal.xml文件了。右击app/src/main目录->New->Directory,创建一个assets目录,然后建litepal.xml文件,内容如下:



    
    
    
    

这里< dbname >标签用于指定数据库的名字,< version >标签用来指定数据库的版本号,< list >用来指定所有映射模型。什么是映射模型呢,我是这么认为的,用一个特殊的类来当做数据库中的数据类型。

3、最后还需要配置一下LitePalApplication,修改AnndroidManifest.xml中的代码,内容如下:




    


接下来创建数据库

1、因为之前有说过,采用的是对象关系映射模式,它可以让我们用面向对象的思维来操作数据库。接下来我们定义一个Book类,代码如下:

public class Book extends DataSupport {

    private int id;

    private String author;

    private double price;

    private int pages;

    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这就是一个典型的javabean,我们定义id,author,price,pages,name这几个字段,然后生成相应的getter和setter方法

2、然后我们要把Book类放到映射模型中,代码如下:



    
    
    
        
    

3、然后用Connector.getDatabase()方法就创建完成了
代码如下:

 Connector.getDatabase();

添加数据

1、由于这里我们要用增删改查操作了,而之前的模型类是没有继承结构的,我们需要把继承结构加上:

public class Book extends DataSupport {	 
    ...
}

接下来开始向Book表中添加数据,使用save()方法,代码如下:

  Button insert = (Button)findViewById(R.id.insert_book);
        insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Book book = new Book();
                book.setName("The Da Vinci Code");
                book.setAuthor("Dan Brown");
                book.setPages(454);
                book.setPrice(16.96);
                //添加数据
                book.save();
            }
    });

这里我按照书中,做了一个添加数据的按钮,首先创建出Book的实例,然后用set方法进行设置,最后用save() 方法完成添加操作。

更新数据

比如我们要把某一本书的价格改为10.99,那么我们可以写如下代码:

Button update = (Button)findViewById(R.id.update_book);
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Book book = new Book();
                book.setPrice(10.99);
                book.updateAll("name=? and author=?","The Da Vinci Code" ,"Dan Brown");
            }
        });

同样我做了一个修改数据的按钮。我们先创建Book的实例,然后调用setPrice()方法设置更新的数据,然后用updateAll()方法去执行。前面的参数是一个SQL语句,约束条件用?代替,后面的参数来填充前面的“?”。
PS:在javaweb开发时也有类似操作,在连接数据库时:

@Override
	public void addUser(User user) {
		Connection conn=null;
		PreparedStatement ps = null;
		String sql="insert k_user(`name`,`password`) value (?,?)";
		try {
			conn=DBUtil.getConnection();
			ps=conn.prepareStatement(sql);
			ps.setString(1, user.getName());
			ps.setString(2, user.getPassword());
			ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

这里向k_user添加数据时的sql语句也是类似的方法。

更新数据库(添加表)

用一样的方法创建一张表,一个javabean,然后添加到映射模型中去,最后把版本号加1,就可以了、



    
    
    
        
        //添加第二张表
        
    

删除数据

调用DataSupport.deleteAll()方法来删除数据。代码你一看就知道了,跟之前修改的方法差不多,代码:

Button delete = (Button)findViewById(R.id.delete_book);
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DataSupport.deleteAll(Book.class,"price

这是删除数据的一个按钮。

查看数据

LitePal的查询功能非常强大,只需要用DataSupport.findAll(Book.class)方法就可以查询所有数据了,返回的是一个List。
但是我个人习惯使用原生的SQL语句来查询,所以这里用的是SQL语句来进行查询。

 Button look = (Button) findViewById(R.id.look_book);
        look.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor c = DataSupport.findBySQL("select * from Book where pages > ? and price < ?","400","20");
                if(c.moveToFirst()){
                    do{
                        //遍历Cursor对象
                        String name = c.getString(c.getColumnIndex("name"));
                        String author = c.getString(c.getColumnIndex("author"));
                        int pages = c.getInt(c.getColumnIndex("pages"));
                        double price = c.getDouble(c.getColumnIndex("price"));
                        Log.d("MyText","name is ="+name);
                        Log.d("MyText","author is ="+author);
                        Log.d("MyText","pages is="+pages);
                        Log.d("MyText","price is ="+price);
                    }while(c.moveToNext());
                }
                c.close();
            }
        });

代码看起来挺多的,因为这里用的是DataSupport.findBuSQL()方法进行原生查询,返回的是一个Cursor对象,
需要一一把数据取出才行。

你可能感兴趣的:(Android开发)