sqlite ORMLite 框架应用
bean
package com.test.deamo.bean; import android.os.Parcel; import android.os.Parcelable; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; /** * author: yhf * Description: * date: 2016/04/20 18:22 */ @DatabaseTable(tableName = "tb_account") public class Account implements Parcelable { @DatabaseField(generatedId = true) private int id; @DatabaseField(columnName = "user_name") private String userName;// 用户姓名 @DatabaseField(columnName = "password") private String password;//密码 @DatabaseField(columnName = "token") private String token;// token值 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.id); dest.writeString(this.userName); dest.writeString(this.password); dest.writeString(this.token); } public Account() { } protected Account(Parcel in) { this.id = in.readInt(); this.userName = in.readString(); this.password = in.readString(); this.token = in.readString(); } public static final Creator<Account> CREATOR = new Creator<Account>() { @Override public Account createFromParcel(Parcel source) { return new Account(source); } @Override public Account[] newArray(int size) { return new Account[size]; } }; }
DatabaseHelper
package com.test.deamo.utils.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; import com.test.deamo.bean.Account; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; /** * Created by administrator * Description 数据库操作封装 * 2016/4/27 9:06. */ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String TABLE_NAME = "test.db"; private Map<String, Dao> daos = new HashMap<String, Dao>(); private DatabaseHelper(Context context) { super(context, TABLE_NAME, null, 4); } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Account.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { TableUtils.dropTable(connectionSource, Account.class, true); onCreate(database, connectionSource); } catch (SQLException e) { e.printStackTrace(); } } private static DatabaseHelper instance; /** * 单例获取该Helper * * @param context * @return */ public static synchronized DatabaseHelper getHelper(Context context) { context = context.getApplicationContext(); if (instance == null) { synchronized (DatabaseHelper.class) { if (instance == null) instance = new DatabaseHelper(context); } } return instance; } public synchronized Dao getDao(Class clazz) throws SQLException { Dao dao = null; String className = clazz.getSimpleName(); if (daos.containsKey(className)) { dao = daos.get(className); } if (dao == null) { dao = super.getDao(clazz); daos.put(className, dao); } return dao; } /** * 释放资源 */ @Override public void close() { super.close(); for (String key : daos.keySet()) { Dao dao = daos.get(key); dao = null; } } }
dao类
package com.test.deamo.dao; import android.content.Context; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.QueryBuilder; import com.j256.ormlite.stmt.Where; import com.test.deamo.bean.Account; import com.test.deamo.utils.db.DatabaseHelper; import java.sql.SQLException; public class AccountDao { private Context context; private Dao<Account, Integer> accountDao; private DatabaseHelper databaseHelper; public AccountDao(Context context) { this.context = context; try { databaseHelper = DatabaseHelper.getHelper(this.context); accountDao = databaseHelper.getDao(Account.class); } catch (SQLException e) { e.printStackTrace(); } } /** * 添加用户信息 * @param account */ public void add(Account account){ try { accountDao.create(account); } catch (SQLException e) { e.printStackTrace(); } } /** * 更新用户信息 * @param account */ public void update(Account account){ try { accountDao.update(account); } catch (SQLException e) { e.printStackTrace(); } } /** * 根据token获取account实体 * @param token * @return Account account */ public Account getAccountWithToken(String token){ return getAccountWithFiled("token", token); } /** * 根据字段名和值获取账号实体 * @param fieldName * @param fieldVal * @return */ public Account getAccountWithFiled(String fieldName, String fieldVal){ Account account = null; try { QueryBuilder<Account, Integer> queryBuilder = accountDao.queryBuilder(); Where<Account, Integer> where = queryBuilder.where(); where.eq(fieldName, fieldVal); account = where.queryForFirst(); } catch (SQLException e) { e.printStackTrace(); } return account; } }
扫描公众号,关注更多信息
---------------------------------------------------------------------------------我是分割线--------------------------------------------------------------------------to be a better me, talk is cheap show me the code
版权所有,转载请注明原文链接。
文中有不妥或者错误的地方还望指出,以免误人子弟。如果觉得本文对你有所帮助不妨【推荐】一下!如果你有更好的建议,可以给我留言讨论,共同进步!
再次感谢您耐心的读完本篇文章。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
分类:
Android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?