博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)Android中使用ormlite实现持久化(一)--HelloOrmLite
阅读量:7066 次
发布时间:2019-06-28

本文共 5315 字,大约阅读时间需要 17 分钟。

Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主 要是我对sql语言不熟悉)。而Java Web开发中有很多orm框架,但是想直接放到Android上用有些麻烦。尝试了一下找Android的orm框架,说实话还有好几个。

  

实现考虑的是:androrm  
官网:   
说实话,这个我实在没有弄懂,一共两个包。  
一个是依赖包:  (2.6)  
另外一个就是主包:androrm.jar   不管怎么下载的都不能使用...  
  
然后有考虑了一下db4o  
官网:   
官网上的介绍说是已经支持Android了,但是我一是觉得包有点大,而是觉得速度有点慢  
  
最后看到的就是ormlite  
官网:      
一共两个包:一个是ormlite-core-4.24.jar,另一个是ormlite-android-4.24.jar   
从以下网址可以下载到:       
        
下面按照惯例来个Hello world   
新建Android项目:HelloOrmLite   

Android中使用ormlite实现持久化(一)--HelloOrmLite

     
添加文件夹:libs,将所需的两个包复制到其中。添加引用   

Android中使用ormlite实现持久化(一)--HelloOrmLite

     新建一个model:Hello.java    
         
1 package cn.sdx.model;  2  3 import com.j256.ormlite.field.DatabaseField;  4  5 public class Hello {  6 @DatabaseField(generatedId = true)  7 int id;  8 @DatabaseField  9 String word; 10 11 public Hello() { 12 } 13 14 @Override 15 public String toString() { 16   StringBuilder sb = new StringBuilder(); 17   sb.append("id=").append(id); 18   sb.append(" ,word=").append(word); 19   return sb.toString(); 20 } 21 22 }

 

  
 
@DatabaseField是声明id为数据库字段,generatedId =true声明id为自增长    
     然后重写了toString()    
          
再添加一个DataHelper.java   
1 package cn.sdx.utils;  2  3 import java.sql.SQLException;  4  5 import android.content.Context;  6 import android.database.sqlite.SQLiteDatabase;  7 import android.util.Log;  8  9 10 import cn.sdx.model.Hello; 11 12 import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; 13 import com.j256.ormlite.dao.Dao; 14 import com.j256.ormlite.support.ConnectionSource; 15 import com.j256.ormlite.table.TableUtils; 16 17 public class DataHelper extends OrmLiteSqliteOpenHelper { 18 19 private static final String DATABASE_NAME = "HelloOrmlite.db"; 20 private static final int DATABASE_VERSION = 1; 21 private Dao22       23       24       25       26       
27 28 29 30 31 helloDao = null; 32 33 public DataHelper(Context context) { 34 super(context, DATABASE_NAME, null, DATABASE_VERSION); 35 } 36 37 @Override 38 public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { 39 try { 40 TableUtils.createTable(connectionSource, Hello.class); 41 } catch (SQLException e) { 42 Log.e(DataHelper.class.getName(), "创建数据库失败", e); 43 e.printStackTrace(); 44 } 45 } 46 47 @Override 48 public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, 49 int arg3) { 50 try { 51 TableUtils.dropTable(connectionSource, Hello.class, true); 52 onCreate(db, connectionSource); 53 } catch (SQLException e) { 54 Log.e(DataHelper.class.getName(), "更新数据库失败", e); 55 e.printStackTrace(); 56 } 57 } 58 59 @Override 60 public void close() { 61 super.close(); 62 helloDao = null; 63 } 64 65 public Dao66 67 68 69 70
71 72 73 74 75 getHelloDataDao() throws SQLException { 76 if (helloDao == null) { 77 helloDao = getDao(Hello.class); 78 } 79 return helloDao; 80 } 81 } 82 83 84 85 86
87 88 89 90 91

 

 
在布局文件中添加一个TextView    
     HelloOrmliteActivity.java中添加对数据库的操作    
     
代码如下
1 package cn.sdx;  2  3 import java.sql.SQLException;  4 import java.util.List;  5  6 import com.j256.ormlite.android.apptools.OrmLiteBaseActivity;  7 import com.j256.ormlite.dao.Dao;  8  9 import android.os.Bundle; 10 import android.widget.TextView; 11 import cn.sdx.model.Hello; 12 import cn.sdx.utils.DataHelper; 13 14 public class HelloOrmliteActivity extends OrmLiteBaseActivity15     16     17     18     19     
20 21 22 23 24 { 25 /** Called when the activity is first created. */ 26 @Override 27 public void onCreate(Bundle savedInstanceState) { 28 super.onCreate(savedInstanceState); 29 setContentView(R.layout.main); 30 TextView tv = (TextView) this.findViewById(R.id.output); 31 try { 32 Dao33 34 35 36 37
38 39 40 41 42 helloDao = getHelper().getHelloDataDao(); 43 // 添加数据 44 for (int i = 0; i < 2; i++) { 45 Hello hello = new Hello("Hello" + i); 46 helloDao.create(hello); 47 } 48 tv.setText(tv.getText() + "\n" + "添加数据完成"); 49 // 查询添加的数据 50 List51 52 53 54 55
56 57 58 59 60 hellos = helloDao.queryForAll(); 61 for (Hello h : hellos) { 62 tv.setText(tv.getText() + "\n" + h.toString()); 63 } 64 // 删除数据第一条数据 65 helloDao.delete(hellos.get(0)); 66 tv.setText(tv.getText() + "\n" + "删除数据完成"); 67 // 重新查询数据 68 hellos = helloDao.queryForAll(); 69 for (Hello h : hellos) { 70 tv.setText(tv.getText() + "\n" + h.toString()); 71 } 72 // 修改数据 73 Hello h1 = hellos.get(0); 74 h1.setWord("这是修改过的数据"); 75 tv.setText(tv.getText() + "\n" + "修改数据完成"); 76 helloDao.update(h1); 77 // 重新查询数据 78 hellos = helloDao.queryForAll(); 79 for (Hello h : hellos) { 80 tv.setText(tv.getText() + "\n" + h.toString()); 81 } 82 83 } catch (SQLException e) { 84 // TODO Auto-generated catch block 85 e.printStackTrace(); 86 } 87 88 } 89 } 90 91 92 93 94 95 96 97

 

以上实现了数据库操作相关的增删改,下面是效果:    
     

Android中使用ormlite实现持久化(一)--HelloOrmLite

      
          
   OrmLite的功能非常强大,Model类的声明中非常重要,外键约束,非空检查等等问题都有相对的处理方法。

转载地址:http://brtll.baihongyu.com/

你可能感兴趣的文章
vue双向绑定原理
查看>>
初学python,感受和C的不同
查看>>
洛谷P3146 [USACO16OPEN]248
查看>>
Codeforces Round #419 (Div. 2) A-E
查看>>
【Leetcode】Path Sum II
查看>>
asp.net 2.0 导出DataTable到Excel中
查看>>
PCA算法学习_1(OpenCV中PCA实现人脸降维)
查看>>
Kinect+OpenNI学习笔记之12(简单手势所表示的数字的识别)
查看>>
对比学习UIKit和AppKit--入门级
查看>>
深入学习JVM了解JVM内存模型
查看>>
LabVIEW与Arduino的连接
查看>>
[转]MySQL排序原理与案例分析
查看>>
ILMerge合并多个DLL
查看>>
DataTable转实体类
查看>>
用webmagic实现一个java爬虫小项目
查看>>
【uva 658】It's not a Bug, it's a Feature!(图论--Dijkstra或spfa算法+二进制表示+类“隐式图搜索”)...
查看>>
java for 的用法总结
查看>>
解决 多列 布局 左右等高问题
查看>>
Ubuntu 下新建用户
查看>>
gulp配置
查看>>