您的位置:首页 > 数据库

使用LitePal操作数据库(实现对数据的增、删、改、查)

2018-04-02 22:28 417 查看

一、LitePal是什么?

LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用的一些数据库功能进行了封装,使得不写一行SQL语句就可以完成各种建表和增、删、改、查的操作。LitePal的项目主页:点击此处

二、配置LitePal

1.使用LitePal第一步,就是编辑app/build.gradle文件,在dependencies包中添加如下内容:

compile 'org.litepal.android:core:1.6.1'


注意:最后的1.6.1是版本号的意思,最新的版本号到LitePal的项目主页上查看。

2.在app下新建assets文件夹,在此文件夹下新建 litepal.xml,接着编辑 litepal.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
//创建数据库
<dbname value="Music"></dbname>
//版本号
<version value="1"></version>

<!--定义您的模型和映射标签列表中,LitePal
  为每个映射类创建表。支持字段
  中定义的模型将被映射到列。-->
<list>

</list>
</litepal>


dbname配置项目的数据库名称。

版本配置数据库的版本。每次你想升级数据库,加值。

列表配置映射类。

存储配置数据库文件应保存在这里。内部和外部是唯一有效的选项。

3.在Manifest中注册name标签:

如果已经有name标签则可以省略这一步

<application
//在Manifest中注册name标签
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>


接下来就可以创建数据库了

在mian.java中做以下修改:

public class MainActivity extends Application {

@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}


4.接下来创建数据:

首先定义模型。例如有一个模型专辑。下面的模型可以被定义为:

public class Album extends DataSupport {
@Column(unique = true, defaultValue = "unknown")
private String name;

private float price;

private List<Song> songs = new ArrayList<Song>();

public String getName() {
return name;
}

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

public float getPrice() {
return price;
}

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

public List<Song> getSongs() {
return songs;
}

public void setSongs(List<Song> songs) {
this.songs = songs;
}

}


然后将这些模型添加到映射在litepal.xml列表:

<mapping class="com.test.project.litepaltest.Album"></mapping>


下次将生成的表操作数据库。例如,获得SQLiteDatabase以下代码:

修改mian.java代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db=LitePal.getDatabase();
}


5.表创建好,接下来,就可实现数据的增、删、改、查:

布置mian.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.test.project.litepaltest.MainActivity">

<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/insert_et"
android:hint="输入要插入的专辑名"

/>

<Button
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="insert"
android:id="@+id/insert_db_btn"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/update_et"
android:hint="输入新的专辑名"
/>
<Button
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="update"
android:id="@+id/update_db_btn"
/>
<Button
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="delete"
android:id="@+id/delete_db_btn"
/>
<Button
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="quary"
android:id="@+id/quary_db_btn"
/>

</LinearLayout>


布置mian.java代码:

使用sava方法保存数据,即插入数据。

每个模型的继承自DataSupport也会更新()和updateAll()方法。可以更新一个指定id。

可以删除单个记录,使用DataSupport delete()方法。

使用Id、或者模糊查询,查询数据。

public class MainActivity extends AppCompatActivity  implements View.OnClickListener {

private  Button insertBtn;
private EditText insertEt;
private  Button updateBtn;
private  Button deleteBtn;
private  Button quaryBtn;
private EditText updateEt;
private EditText insertSongEt;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//        SQLiteDatabase db=LitePal.getDatabase();
bindId();
}

private void bindId() {
insertBtn=findViewById(R.id.insert_db_btn);
insertEt=findViewById(R.id.insert_et);
updateBtn=findViewById(R.id.update_db_btn);
updateEt=findViewById(R.id.update_et);
insertSongEt=findViewById(R.id.insert_song_et);
deleteBtn=findViewById(R.id.delete_db_btn);
quaryBtn=findViewById(R.id.quary_db_btn);

insertBtn.setOnClickListener(this);
updateBtn.setOnClickListener(this);
deleteBtn.setOnClickListener(this);
quaryBtn.setOnClickListener(this);
}

@Override
public void onClick(View view) {
switch (view.getId()){

case R.id.insert_db_btn:
//插入专辑名
String albumName=insertEt.getText().toString();
float price=109.6f;

Album album=new Album();
album.setName(albumName);
album.setPrice(price);
album.save();

break;
case R.id.update_db_btn:
//更新专辑名
String albumName1=updateEt.getText().toString();
Album album1= DataSupport.find(Album.class,3);
album1.setName(albumName1);
album1.save();
break;
case  R.id.delete_db_btn:
//删除专辑名
int row=DataSupport.delete(Album.class,2);
break;
case R.id.quary_db_btn:
//查找专辑名
//                Album album2=DataSupport.find(Album.class,3);
//模糊查询
List<Album> albumList= DataSupport.where("name like ? ","B%").find(Album.class);

for (Album a:albumList
) {
Log.e("onClick: ",a.getName()+"**************");
}
break;

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐