安卓数据库封装
来源:互联网 发布:跳跃网络 中青宝 编辑:程序博客网 时间:2024/05/22 15:30
不妥之处希望给予纠正,学习中
首先写一个数据库的增删改查的抽象类,五个抽象方法,我只使用了一个User表,所以只有一个获取User表的方法,代码如下
package com.example.a21150.projectutils;import android.content.Context;import java.sql.SQLException;import java.util.List;/** * Created by 21150 on 2016/11/8. */public abstract class DataBaseUtils<T> { private static DataBaseUtils mUserDataBaseUtils; public abstract void insert(T clzz) throws SQLException; public abstract void insert(List<T> list) throws SQLException; public abstract void delete(T clzz) throws SQLException; public abstract void update(T clzz) throws SQLException; public abstract List<T> queryForAll() throws SQLException; public abstract List<T> query(T clzz) throws SQLException; /** * 获取user表的Dao * @param context * @return */ public static DataBaseUtils getUserDabaUtils(Context context) { if (mUserDataBaseUtils == null) { synchronized (DataBaseUtils.class) { mUserDataBaseUtils = UserDao.getDao(context); } } return mUserDataBaseUtils; }}
下面是User表的Dao类,继承DataBaseUtils类,实现抽象方法,代码如下
package com.example.a21150.projectutils;import android.content.Context;import com.j256.ormlite.dao.Dao;import java.sql.SQLException;import java.util.List;/** * Created by 21150 on 2016/11/8. */public class UserDao extends DataBaseUtils<User> { //User表dao private Dao<User,Integer> mUserDao; private static UserDao mOrmLiteDataBase; private UserDao(Context context){ try { mUserDao = (Dao<User, Integer>) OrmLiteHelper.getInstance(context).getDao(User.class); } catch (SQLException e) { e.printStackTrace(); } } public static UserDao getDao(Context context){ if (mOrmLiteDataBase == null){ synchronized (UserDao.class){ mOrmLiteDataBase = new UserDao(context); } } return mOrmLiteDataBase; } @Override public void insert(User clzz) throws SQLException { mUserDao.create(clzz); } @Override public void insert(List<User> list) throws SQLException { mUserDao.create(list); } @Override public void delete(User clzz) throws SQLException { mUserDao.delete(clzz); } @Override public void update(User clzz) throws SQLException { mUserDao.update(clzz); } @Override public List<User> queryForAll() throws SQLException { return mUserDao.queryForAll(); } @Override public List<User> query(User clzz) throws SQLException { List<User> name = mUserDao.queryBuilder().where().eq("name", clzz.getName()).query(); return name; }}
下面时数据库的框架类,我这里用的是ormlite,android studio 导包
compile 'com.j256.ormlite:ormlite-android:5.0'
代码如下
package com.example.a21150.projectutils;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 java.sql.SQLException;/** * Created by 21150 on 2016/11/7. */public class OrmLiteHelper extends OrmLiteSqliteOpenHelper{ private static String dataBaseName = "mydata.db"; private static int version = 1; private Dao<User,Integer> mUserDao; private static OrmLiteHelper mOrmLiteHelper; public OrmLiteHelper(Context context) { super(context, dataBaseName, null, version); } /** * 创建数据库,每次初始化的时候调用 * @param database * @param connectionSource */ @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource,User.class); } catch (SQLException e) { e.printStackTrace(); } } /** * 更新数据库 * @param database 原生SQLiteDatabase,可以执行sql语句 * @param connectionSource 链接数据库资源 * @param oldVersion 旧版本号 * @param newVersion 新版本号 */ @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { TableUtils.dropTable(connectionSource,User.class,true); } catch (SQLException e) { e.printStackTrace(); } } /** * 单例获取数据库 * @param context * @return */ public static synchronized OrmLiteHelper getInstance(Context context){ if(mOrmLiteHelper == null){ synchronized (OrmLiteHelper.class){ mOrmLiteHelper = new OrmLiteHelper(context); } } return mOrmLiteHelper; } /** * 获取单例的dao * @return */ private Dao<User,Integer> getUserDao(){ if (mUserDao == null){ synchronized (OrmLiteHelper.class){ try { mUserDao = mOrmLiteHelper.getDao(User.class); } catch (SQLException e) { e.printStackTrace(); } } } return mUserDao; }}
在activity中使用
package com.example.a21150.projectutils;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import java.sql.SQLException;import java.util.List;public class MainActivity extends AppCompatActivity { private DataBaseUtils<User> mDataBaseUtils; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDataBaseUtils = DataBaseUtils.getUserDabaUtils(this); try { List<User> song = mDataBaseUtils.query(new User("dddd", 15)); } catch (SQLException e) { e.printStackTrace(); } }}
User类如下
package com.example.a21150.projectutils;import com.j256.ormlite.field.DatabaseField;import com.j256.ormlite.table.DatabaseTable;/** * Created by 21150 on 2016/11/7. */@DatabaseTable(tableName = "user")public class User { @DatabaseField(columnName = "id", generatedId = true) private int id; @DatabaseField(columnName = "name") private String name; @DatabaseField(columnName = "age") private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public User(String name, int age) { this.name = name; this.age = age; } public User(){}}
加入更换数据库框架时。只需要更改更改DataBaseUtils的实现类即可
0 0
- 安卓数据库封装
- 安卓Dialog封装
- 安卓OkHttp封装
- 安卓LOG封装类
- 安卓Toast封装类
- 安卓okhttp的封装
- 安卓SharedPreferences封装类
- 安卓okhttp网络封装
- 安卓LOG封装类
- 安卓数据库小结
- 安卓数据库操作
- 安卓数据库
- 安卓数据库开发
- 安卓数据库操作
- 安卓数据库事务
- 安卓数据库操作
- 安卓数据库 realm
- 安卓数据库基础
- Spring定义bean的三种方式和自动注入
- Android 平台下的原生 Markdown 解析器
- android 间 通信
- Zabbix
- 【MyBatis】——自增主键与非自增主键返回
- 安卓数据库封装
- javascript设计模式(二) 代理模式 观察者模式
- 关于设置代理服务器后,FTP 打不开,IE浏览器上不了网
- Java后台SSM框架的简单使用
- LeetCode 第四十三题(Multiply Strings)Java
- 移动H5前端性能优化指南
- 理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)
- 支持Android图文混排、文字环绕图片等效果:MixtureTextView
- JavaScript判断设备是移动还是PC代码