android orm持久层框架-阿里云开发者社区

开发者社区> ctrip_xzh> 正文

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[Android]Android端ORM框架——RapidORM(v2.1)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM框架——RapidORM(v2.1) RapidORM:Android端轻量高性能的ORM框架 GitHub: https://github.com/wangjiegulu/RapidORM RapidORM v2.1 feature 在执行SQL和创建表时提升性能。
616 0
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
1454 0
Android Java 框架基础[知识点汇总]
学习android的过程中,把整个框架的基础结构牢记很重要,特此摘录了一些这个框架的一些基础知识,在使用的过程中按照这个框架学习,事半功倍。 开发过程中参考JDK的文档和android的sdk文档可以清楚遇到的很多问题,遇到问题是现在这两个文档中一般都能找到原因(安装sdk的文档参考http://www.
807 0
Android RIL的java框架
Android RIL的Java部分也被分为了两个模块,RIL模块与Phone模块。其中RIL模块负责进行请求以及相应的处理,它将直接与RIL的原声代码进行通信。而Phone模块则向应用程序开发者提供了一系列的电话功能接口。
838 0
Android应用框架之Service
之前的博客已经介绍了应用框架中的Activity和Application,今天来讲四大组件之一的Service。对于Service大家肯定都比较熟悉,与Activity最大的不同就是Service不会与界面打交道,而是始终工作在后台,执行一些与UI无关的操作和计算。即便用户切换了其他应用,启动的Service仍可在后台运行。一个组件可以与Service绑定并与之交互,甚至是跨
1185 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12069 0
ODB——基于c++的ORM映射框架尝试(安装)
这篇博客应该是和之前的重拾cgi一起的。当时为了模仿java的web框架,从页面的模板,到数据库的ORM,都找个对应的库来进行尝试。数据库用的就是ODB,官方网站是http://www.codesynthesis.com/products/odb/。 1、安装 odb是直接提供源代码的,主要包含
3911 0
+关注
443
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载