android orm持久层框架

简介: <div class="dp-highlighter" id="" style="font-family:Monaco,'DejaVu Sans Mono','Bitstream Vera Sans Mono',Consolas,'Courier New',monospace; width:679px; overflow:auto; margin-left:9px; padding:1px
  1. android数据库开发  
  2.   
  3. Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主要是我对sql语言不熟悉)。而Java Web开发中有很多orm框架,但是想直接放到Android上用有些麻烦。尝试了一下找Android的orm框架,说实话还有好几个。  
  4.   
  5. 实现考虑的是:androrm  
  6. 官网:http://androrm.the-pixelpla.net/  
  7. 说实话,这个我实在没有弄懂,一共两个包。  
  8. 一个是依赖包:Apache Commons - Lang (2.6)  
  9. 另外一个就是主包:androrm.jar   不管怎么下载的都不能使用...  
  10.   
  11. 然后有考虑了一下db4o  
  12. 官网:http://www.db4o.com/  
  13. 官网上的介绍说是已经支持Android了,但是我一是觉得包有点大,而是觉得速度有点慢  
  14.   
  15. 最后看到的就是ormlite  
  16. 官网:http://ormlite.com/  
  17. 一共两个包:一个是ormlite-core-4.24.jar,另一个是ormlite-android-4.24.jar  
  18. 从以下网址可以下载到:http://ormlite.com/releases/  
  19.    
  20. 下面按照惯例来个Hello world  
  21. 新建Android项目:HelloOrmLite  
  22.   
  23.     
  24. 添加文件夹:libs,将所需的两个包复制到其中。添加引用  
  25.   
  26. 新建一个model:Hello.java  
  27.    
  28.   
  29. package cn.sdx.model;   
  30.   
  31. import com.j256.ormlite.field.DatabaseField;   
  32.   
  33. public class Hello {   
  34. @DatabaseField(generatedId = true)   
  35. int id;   
  36. @DatabaseField   
  37. String word;   
  38.   
  39. public Hello() {   
  40. }   
  41.   
  42. @Override   
  43. public String toString() {   
  44.   StringBuilder sb = new StringBuilder();   
  45.   sb.append("id=").append(id);   
  46.   sb.append(" ,word=").append(word);   
  47.   return sb.toString();   
  48. }   
  49.   
  50. }   
  51.   
  52. @DatabaseField是声明id为数据库字段,generatedId =true声明id为自增长  
  53. 然后重写了toString()  
  54.    
  55. 再添加一个DataHelper.java  
  56.   
  57.    
  58. package cn.sdx.utils;   
  59.   
  60. import java.sql.SQLException;   
  61.   
  62. import android.content.Context;   
  63. import android.database.sqlite.SQLiteDatabase;   
  64. import android.util.Log;   
  65.   
  66.   
  67. import cn.sdx.model.Hello;   
  68.   
  69. import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;   
  70. import com.j256.ormlite.dao.Dao;   
  71. import com.j256.ormlite.support.ConnectionSource;   
  72. import com.j256.ormlite.table.TableUtils;   
  73.   
  74. public class DataHelper extends OrmLiteSqliteOpenHelper {   
  75.   
  76. private static final String DATABASE_NAME = "HelloOrmlite.db";   
  77. private static final int DATABASE_VERSION = 1;   
  78. private Dao<Hello, Integer> helloDao = null;   
  79.   
  80. public DataHelper(Context context) {   
  81.   super(context, DATABASE_NAME, null, DATABASE_VERSION);   
  82. }   
  83.   
  84. @Override   
  85. public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {   
  86.   try {   
  87.    TableUtils.createTable(connectionSource, Hello.class);   
  88.   } catch (SQLException e) {   
  89.    Log.e(DataHelper.class.getName(), "创建数据库失败", e);   
  90.    e.printStackTrace();   
  91.   }   
  92. }   
  93.   
  94. @Override   
  95. public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2,   
  96.    int arg3) {   
  97.   try {   
  98.    TableUtils.dropTable(connectionSource, Hello.classtrue);   
  99.    onCreate(db, connectionSource);   
  100.   } catch (SQLException e) {   
  101.    Log.e(DataHelper.class.getName(), "更新数据库失败", e);   
  102.    e.printStackTrace();   
  103.   }   
  104. }   
  105.   
  106. @Override   
  107. public void close() {   
  108.   super.close();   
  109.   helloDao = null;   
  110. }   
  111.   
  112. public Dao<Hello, Integer> getHelloDataDao() throws SQLException {   
  113.   if (helloDao == null) {   
  114.    helloDao = getDao(Hello.class);   
  115.   }   
  116.   return helloDao;   
  117. }   
  118. }   
  119.   
  120.    
  121. 在布局文件中添加一个TextView  
  122. HelloOrmliteActivity.java中添加对数据库的操作  
  123.    
  124. 代码如下:  
  125.    
  126.   
  127. package cn.sdx;   
  128.   
  129. import java.sql.SQLException;   
  130. import java.util.List;   
  131.   
  132. import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;   
  133. import com.j256.ormlite.dao.Dao;   
  134.   
  135. import android.os.Bundle;   
  136. import android.widget.TextView;   
  137. import cn.sdx.model.Hello;   
  138. import cn.sdx.utils.DataHelper;   
  139.   
  140. public class HelloOrmliteActivity extends OrmLiteBaseActivity<DataHelper> {   
  141. /** Called when the activity is first created. */   
  142. @Override   
  143. public void onCreate(Bundle savedInstanceState) {   
  144.   super.onCreate(savedInstanceState);   
  145.   setContentView(R.layout.main);   
  146.   TextView tv = (TextView) this.findViewById(R.id.output);   
  147.   try {   
  148.    Dao<Hello, Integer> helloDao = getHelper().getHelloDataDao();   
  149.    // 添加数据   
  150.    for (int i = 0; i < 2; i++) {   
  151.     Hello hello = new Hello("Hello" + i);   
  152.     helloDao.create(hello);   
  153.    }   
  154.    tv.setText(tv.getText() + "\n" + "添加数据完成");   
  155.    // 查询添加的数据   
  156.    List<Hello> hellos = helloDao.queryForAll();   
  157.    for (Hello h : hellos) {   
  158.     tv.setText(tv.getText() + "\n" + h.toString());   
  159.    }   
  160.    // 删除数据第一条数据   
  161.    helloDao.delete(hellos.get(0));   
  162.    tv.setText(tv.getText() + "\n" + "删除数据完成");   
  163.    // 重新查询数据   
  164.    hellos = helloDao.queryForAll();   
  165.    for (Hello h : hellos) {   
  166.     tv.setText(tv.getText() + "\n" + h.toString());   
  167.    }   
  168.    // 修改数据   
  169.    Hello h1 = hellos.get(0);   
  170.    h1.setWord("这是修改过的数据");   
  171.    tv.setText(tv.getText() + "\n" + "修改数据完成");   
  172.    helloDao.update(h1);   
  173.    // 重新查询数据   
  174.    hellos = helloDao.queryForAll();   
  175.    for (Hello h : hellos) {   
  176.     tv.setText(tv.getText() + "\n" + h.toString());   
  177.    }   
  178.   
  179.   } catch (SQLException e) {   
  180.    // TODO Auto-generated catch block   
  181.    e.printStackTrace();   
  182.   }   
  183.   
  184. }   
  185. }   
  186.   
  187.    
  188.   
  189. 以上实现了数据库操作相关的增删改,下面是效果:  
  190.    
  191.   
  192.     
  193.    
  194.    OrmLite的功能非常强大,Model类的声明中非常重要,外键约束,非空检查等等问题都有相对的处理方法。  
  195.    


原址:http://www.cnblogs.com/htynkn/archive/2011/10/30/android_ormlite_1.html
目录
相关文章
|
7月前
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
195 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
10月前
|
算法 JavaScript Android开发
|
11月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
458 1
|
10月前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
12月前
|
编译器 Android开发 开发者
带你了解Android Jetpack库中的依赖注入框架:Hilt
本文介绍了Hilt,这是Google为Android开发的依赖注入框架,基于Dagger构建,旨在简化依赖注入过程。Hilt通过自动化的组件和注解减少了DI的样板代码,提高了应用的可测试性和可维护性。文章详细讲解了Hilt的主要概念、基本用法及原理,帮助开发者更好地理解和应用Hilt。
404 8
|
12月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
1052 3
|
设计模式 Java Android开发
探索安卓应用开发:从新手到专家的旅程探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在通过一个易于理解的旅程比喻,带领读者深入探讨安卓应用开发的各个方面。我们将从基础概念入手,逐步过渡到高级技术,最后讨论如何维护和推广你的应用。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的代码示例。让我们一起开始这段激动人心的旅程吧!
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
如何使用Amlogic T972安卓9.0系统上的misc框架来简化驱动程序开发,通过misc框架自动分配设备号并创建设备文件,从而减少代码量并避免设备号冲突。
179 0
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单