刚刚把SD卡中的数据库删除了
再运行LitePal.getDatabase()SD卡没有再次生存数据库
目前就这样 正在找原因
本系列的上一篇已经介绍了Android开源数据库框架LitePal如何引入到工程中并进行少量配置使其就绪。接下来将围绕我们平时对Sqlite的使用来介绍LitePal的具体用法。你会沉醉于它的简介,优雅。建表
使用Android原生的数据库编程API,我们要创建数据表就必须依赖于SqliteOpenHelper,组装冗长的SQL建表语句,但是在LitePal中建表变得非常简单。
我们只需要创建每张表对应的实体类(model)即可。还是用LitePal的作者使用的歌曲(Song)和Album(专辑)来举例。
public class Song {
private String name
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
}
public class Album {
private String name
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
}
很明显,我们创建了两个实体类,并提供了getter、setter方法。那么如何让这两个实体类与LitePal关联,并创建对应的数据表呢?还记得在上一篇中提到的litepal.xml文件吗?OK,马上要用到的就是它:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo" ></dbname>
<version value="1" ></version>
<list>
<mapping class = "com.oncno.litepaldemo.model.Album"></mapping>
<mapping class="com.oncno.litepaldemo.model.Song"></mapping>
</list>
</litepal>
在<list></list>标签中加入对应的class作为映射,LitePal就知道该创建哪些数据表了。完成了这些,在你下次有数据库 *** 作的时,数据表就会自动创建好了。比如调用调用数据库对象:
Connector.getDatabase()
此时Song和Album的数据库就会自动创建SQL建表语句,并创建好数据表,Like this:
CREATE TABLE album (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
)
CREATE TABLE song (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
)
在Demo程序中默认Activity中调用Connector.getDatabase():
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Connector.getDatabase()
}
@Override
protected void onResume() {
super.onResume()
Connector.getDatabase()
}
... ...
}
运行程序,并在adb shell中查看效果:
可以看到我们在litepal.xml的demo.db数据库已经创建好了。运行sqlite3 demo.db查看数据库表结构:
//Sqlite中查看数据库中所有的数据表
.table
//Sqlite中查看数据表结构
pragma table_info(TABLE_NAME)
OK,album和song两个表同样也按照我们配置的那样创建好了,并且像我们在实体类定义的那样,都包含name属性。相比于原生的方式,LitePal明显提供了简洁,优雅的建表 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)