使用LitePal操作数据库(实现对数据的增、删、改、查)
程序员文章站
2022-06-01 21:07:57
...
一、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;
}
}
}
上一篇: 神奇的Animation