学会使用LitePal操作数据库
LitePal简介:
LitePal是一个Android开源库,它使开发者使用SQLite数据库变得非常容易。 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新表,约束操作,聚合功能等等。
LitePal的基本用法
1.编辑build.gradle文件引入Jar包
dependencies {
compile 'org.litepal.android:core:1.3.0'
}
2.配置litepal.xml
在assets目录下创建一个litepal.xml文件,复制以下代码进去:
这里我们创建litepal.xml文件的步骤为:Project->Main目录下->新建Directory包名为assets->新建file文件名为litepal.xml
接下来在litepal.xml中写下这几行代码
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo" />
<version value="1" />
<list>
</list>
</litepal>
3.创建表格
这里我创建两个实体类Album和Song
实体类Album
public class Album extends DataSupport{
@Column(unique = true, defaultValue = "unknown")
private String name;
private float price;
private Date releaseDate;
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;
}
}
实体类Song
public class Song extends DataSupport{
@Column(nullable = false)
private String name;
private int duration;
@Column(ignore = true)
private String uselessField;
private Album album;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getUselessField() {
return uselessField;
}
public void setUselessField(String uselessField) {
this.uselessField = uselessField;
}
public Album getAlbum() {
return album;
}
public void setAlbum(Album album) {
this.album = album;
}
}
4.修改assets目录下的litepal.xml文件
<list>
<mapping class="com.example.lenovo.myapplication.Album" />
<mapping class="com.example.lenovo.myapplication.Song" />
</list>
5.在AndroidManifest.xml中配置下LitePalApplication
android:name="org.litepal.LitePalApplication"
接下来就可以对数据进行增删改查了
首先在xml中添加按钮
<EditText
android:id="@+id/album_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="添加专辑名" />
<Button
android:id="@+id/add_album_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="添加专辑" />
<Button
android:id="@+id/delete_album_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="删除专辑" />
<EditText
android:id="@+id/update_album_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="修改专辑" />
<Button
android:id="@+id/update_album_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="修改专辑" />
<Button
android:id="@+id/query_album_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="查找专辑" />
MainActivity中进行增删改查操作
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText albumET;
private Button addAlbumBtn;
private Button deleteAlbumBtn;
private Button updateAlbumBtn;
private Button queryBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// SQLiteDatabase db = LitePal.getDatabase();
bindID();
}
private void bindID() {
albumET=findViewById(R.id.album_et);
addAlbumBtn=findViewById(R.id.add_album_btn);
deleteAlbumBtn=findViewById(R.id.delete_album_btn);
updateAlbumBtn=findViewById(R.id.update_album_btn);
queryBtn=findViewById(R.id.query_album_btn);
addAlbumBtn.setOnClickListener(this);
deleteAlbumBtn.setOnClickListener(this);
updateAlbumBtn.setOnClickListener(this);
queryBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
//增加
case R.id.add_album_btn:
String name=albumET.getText().toString();
float price=101f;
Album album=new Album();
album.setName(name);
album.setPrice(price);
album.save();
Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
break;
//删除
case R.id.delete_album_btn:
int AL=DataSupport.delete(Album.class, 1);
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
break;
//修改
case R.id.update_album_btn:
Album albumToUpdate = DataSupport.find(Album.class, 1);
albumToUpdate.setPrice(99.99f); // raise the price
albumToUpdate.save();
Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
break;
//查找
case R.id.query_album_btn:
// List<Album>albumList=DataSupport.findAll(Album.class);//查询所有数据
List<Album>albumList=DataSupport.where("name like ?","a%").find(Album.class);
Toast.makeText(this, "查找成功", Toast.LENGTH_SHORT).show();
for(Album a:
albumList){
Log.e("MAIN",a.getName()+"******");
}
break;
}
}
}