在用litepal中使用connector.getdatabase方法如果数据库被创建过了会不会被重复创

在用litepal中使用connector.getdatabase方法如果数据库被创建过了会不会被重复创,第1张

LitePal.getDatabase()貌似只创建一次

刚刚把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明显提供了简洁,优雅的建表 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6809001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存