创建联系人的实体类 Contact 继承 OrmObject 并添加相应注解,创建数据库对应类ContactStore 继承 OrmDatabase 并添加相应注解,编写数据库工具类DataContactUtil 封装数据库初始化及对联系人的增、删等功能
时间: 2024-02-22 15:59:49 浏览: 19
好的,您的问题是如何创建联系人的实体类 Contact 继承 OrmObject 并添加相应注解,创建数据库对应类 ContactStore 继承 OrmDatabase 并添加相应注解,编写数据库工具类 DataContactUtil 封装数据库初始化及对联系人的增、删等功能。
首先,我们需要引入 OrmLite 库,它是一个轻量级的 ORM 框架,可以快速地帮助我们完成数据库的操作。在引入库之后,我们开始创建 Contact 实体类,代码如下:
```java
@DatabaseTable(tableName = "contacts")
public class Contact extends OrmObject {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
private String name;
@DatabaseField
private String phone;
public Contact() {
}
public Contact(String name, String phone) {
this.name = name;
this.phone = phone;
}
// getter 和 setter 方法省略
}
```
在这个实体类中,我们使用了 OrmLite 提供的注解来标记数据库中的表名和字段名,以及自动生成的 ID 字段。接下来,我们创建 ContactStore 类,代码如下:
```java
public class ContactStore extends OrmDatabase {
private static final String DATABASE_NAME = "contacts.db";
private static final int DATABASE_VERSION = 1;
public ContactStore(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Contact.class);
} catch (SQLException e) {
Log.e(ContactStore.class.getName(), "Error creating database", e);
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
TableUtils.dropTable(connectionSource, Contact.class, true);
onCreate(database, connectionSource);
} catch (SQLException e) {
Log.e(ContactStore.class.getName(), "Error upgrading database", e);
}
}
}
```
在这个类中,我们继承了 OrmDatabase 类,并且重写了 onCreate 和 onUpgrade 方法,用于创建和升级数据库。在 onCreate 方法中,我们使用了 TableUtils 工具类来创建 Contact 表。在 onUpgrade 方法中,我们先删除原来的 Contact 表,再重新创建一个新的表。
最后,我们创建 DataContactUtil 工具类,代码如下:
```java
public class DataContactUtil {
private static ContactStore store;
private static DataContactUtil instance;
private DataContactUtil(Context context) {
store = new ContactStore(context);
}
public static synchronized DataContactUtil getInstance(Context context) {
if (instance == null) {
instance = new DataContactUtil(context);
}
return instance;
}
public List<Contact> getAllContacts() {
List<Contact> contacts = new ArrayList<>();
try {
contacts = store.getDao(Contact.class).queryForAll();
} catch (SQLException e) {
Log.e(DataContactUtil.class.getName(), "Error getting all contacts", e);
}
return contacts;
}
public Contact getContactById(int id) {
Contact contact = null;
try {
contact = store.getDao(Contact.class).queryForId(id);
} catch (SQLException e) {
Log.e(DataContactUtil.class.getName(), "Error getting contact by id " + id, e);
}
return contact;
}
public void addContact(Contact contact) {
try {
store.getDao(Contact.class).create(contact);
} catch (SQLException e) {
Log.e(DataContactUtil.class.getName(), "Error adding contact", e);
}
}
public void updateContact(Contact contact) {
try {
store.getDao(Contact.class).update(contact);
} catch (SQLException e) {
Log.e(DataContactUtil.class.getName(), "Error updating contact", e);
}
}
public void deleteContact(Contact contact) {
try {
store.getDao(Contact.class).delete(contact);
} catch (SQLException e) {
Log.e(DataContactUtil.class.getName(), "Error deleting contact", e);
}
}
}
```
在这个工具类中,我们使用了 ContactStore 类中的 DAO 对象来进行数据库的操作,包括获取所有联系人、根据 ID 获取联系人、添加联系人、更新联系人和删除联系人等方法。
以上就是创建联系人的实体类 Contact 继承 OrmObject 并添加相应注解,创建数据库对应类 ContactStore 继承 OrmDatabase 并添加相应注解,编写数据库工具类 DataContactUtil 封装数据库初始化及对联系人的增、删等功能的过程。