使用greenDAO 3.2.2 操作外部数据库
2017-07-11 14:10
453 查看
项目开发中有时需要用到一些写死的数据,如公司的产品信息之类的。这就需要我们先把数据库文件保存在资源文件夹下,然后当应用创建时将数据库文件拷到应用安装目录的/databases/文件夹下,然后再对数据进行操作。
本篇文章参考了【Android】GreenDao操作外部DB数据库文件—-寒小枫
使用greenDAO操作数据库能够省去自己去写SQLite语句的繁琐,提高效率。greenDAO默认保存数据库的地址也是在应用安装目录的/databases/文件夹下。
* 因为导入的是已经创建好表的数据库,所以要在类前注解:
每个变量前的
参数分别是(列号,数据类型,变量名,是否是主键,列名),这里的列名默认是变量名的大写形式,与表中的列名有了偏差,执行SQLite语句时就会出现no such columns的错误。
创建完后要Make Project一次。
之后就能进行各种操作了。
本篇文章参考了【Android】GreenDao操作外部DB数据库文件—-寒小枫
使用greenDAO操作数据库能够省去自己去写SQLite语句的繁琐,提高效率。greenDAO默认保存数据库的地址也是在应用安装目录的/databases/文件夹下。
拷贝文件
拷贝文件就是将数据库文件拷到应用安装目录的/databases/文件夹下//数据库文件路径 private static final String DB_PATH = "/data/data/包名/databases/"; //数据库文件名 private static final String DB_NAME = "dbname.db"; /** * 将assets文件夹下文件拷贝到/databases/下 * @param context * @param db_name */ public static void copyDbFile(Context context, String db_name) { InputStream in = null; FileOutputStream out = null; String path = "/data/data/" + context.getPackageName() + "/databases/"; File file = new File(path + db_name); //创建文件夹 File filePath = new File(path); if (!filePath.exists()) filePath.mkdirs(); if (file.exists()) return; try { in = context.getAssets().open(db_name); // 从assets目录下复制 out = new FileOutputStream(file); int length = -1; byte[] buf = new byte[1024]; while ((length = in.read(buf)) != -1) { out.write(buf, 0, length); } out.flush(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) in.close(); if (out != null) out.close(); } catch (IOException e1) { e1.printStackTrace(); } } }
导入greenDAO依赖库
// project级builde.gradle文件中 buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin } } // module级builde.gradle文件中 apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // apply plugin dependencies { compile 'org.greenrobot:greendao:3.2.2' // add library }
配置路径
//module级builde.gradle文件中 greendao { schemaVersion 1 daoPackage '包名.gen' targetGenDir 'src/main/java' }
创建一个实体类
* 注意: ** 因为导入的是已经创建好表的数据库,所以要在类前注解:
@Entity(nameInDb = "productinfo",createInDb = false),其中
nameInDb = "tablename"是声明表名,不作此声明greenDAO默认操作的是库名的同名的表;另一句
createInDb = false是声明不再创建这个表,如果不这样声明greenDAO就会在UserDao文件中加入createTable方法,继而创建一个名叫tablename的同名表,然后就会出现table already exists的错误。
每个变量前的
@Property(nameInDb = "_id")注解是为了让变量名能够指向列名,如果表中的一列是Name,而实体类中的属性是name,则在greenDAO编译后会创建
public final static Property Ear = new Property(2, String.class, "name", false, "NAME");
参数分别是(列号,数据类型,变量名,是否是主键,列名),这里的列名默认是变量名的大写形式,与表中的列名有了偏差,执行SQLite语句时就会出现no such columns的错误。
@Entity(nameInDb = "tablename",createInDb = false) public class User{ @Property(nameInDb = "_id") @Id (autoincrement = true) private long id; @Property(nameInDb = "Name") private int name; @Property(nameInDb = "Ear") private String ear; }
创建完后要Make Project一次。
操作数据表
一切准备就绪后就是操作数据表了,首先要获得数据表的操作对象DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "dbname.db"); Database db = helper.getWritableDb(); DaoSession daoSession = new DaoMaster(db).newSession(); ProductDao dao = daoSession.getProductDao();
之后就能进行各种操作了。
END
因为涉及到公司的东西就不贴源码了,有问题可以直接评论,互相交流。相关文章推荐
- [置顶] Android数据库GreenDAO3.2.2的使用(三,GreenDao操作外部数据库----操作.db数据库)
- [置顶] Android数据库GreenDAO3.2.2的使用(一,集成数据库)
- Android ORM之GreenDao3.0 使用外部数据库.db文件总结
- 如何在一个项目中完美融入GreenDao并使用Facde设计模式操作数据库
- 安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo①——集成环境,开辟难题。
- Android studio,使用greenDao第三方数据库框架操作数据库
- GreenDao3.2.2集成使用以及数据库的升级
- 安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo③—— 一对多关系操作。
- [置顶] Android数据库GreenDAO3.2.2的使用(四、数据库升级)
- android使用GreenDao操作数据库
- GreenDao3.2的使用,让你本地数据库操作坐上了高铁
- 安卓本地轻量级数据库操作框架 greenDao3.2.2 详细教程附带Demo②——增、删、查、改。
- 使用GreenDao对数据库进行操作
- greenDAO的使用详解---(2)greenDAO3.2.2数据库的升级
- Android数据库-greenDao3.2.2初体验(下)-简单的查询和删除操作
- [置顶] Android数据库GreenDAO3.2.2的使用(二,数据库使用)
- greendao3.x 以及操作外部数据库
- greenDAO的使用详解---(3)greenDAO3.2.2数据库的升级bug解决
- Android数据库——GreenDAO3.2.2的使用