Android中使用ormlite實現持久化(一)--HelloOrmLite

openkk 12年前發布 | 115K 次閱讀 Android Android開發 移動開發

Android中內置了sqlite,但是常用的開發語言java是面向對象的,而數據庫是關系型的,二者之間的轉化每次都很麻煩(主 要是我對sql語言不熟悉)。而Java Web開發中有很多orm框架,但是想直接放到Android上用有些麻煩。嘗試了一下找Android的orm框架,說實話還有好幾個。


實現考慮的是:androrm
說實話,這個我實在沒有弄懂,一共兩個包。
一個是依賴包:Apache Commons - Lang (2.6)
另外一個就是主包:androrm.jar   不管怎么下載的都不能使用...

然后有考慮了一下db4o
官網上的介紹說是已經支持Android了,但是我一是覺得包有點大,而是覺得速度有點慢

最后看到的就是ormlite
一共兩個包:一個是ormlite-core-4.24.jar,另一個是ormlite-android-4.24.jar
從以下網址可以下載到: http://ormlite.com/releases/
 
下面按照慣例來個Hello world
新建Android項目:HelloOrmLite

Android中使用ormlite實現持久化(一)--HelloOrmLite

   </div>
添加文件夾:libs,將所需的兩個包復制到其中。添加引用

Android中使用ormlite實現持久化(一)--HelloOrmLite

新建一個model:Hello.java
 
package cn.sdx.model;

import com.j256.ormlite.field.DatabaseField;

public class Hello { @DatabaseField(generatedId = true) int id; @DatabaseField String word;

public Hello() { }

@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("id=").append(id); sb.append(" ,word=").append(word); return sb.toString(); }

} </pre> </div>

@DatabaseField是聲明id為數據庫字段,generatedId =true聲明id為自增長
然后重寫了toString()
 
再添加一個DataHelper.java
package cn.sdx.utils;

import java.sql.SQLException;

import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.util.Log;

import cn.sdx.model.Hello;

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;

public class DataHelper extends OrmLiteSqliteOpenHelper {

private static final String DATABASE_NAME = "HelloOrmlite.db"; private static final int DATABASE_VERSION = 1; private Dao

  <hello, integer="">




    helloDao = null; 

public DataHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }

@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Hello.class); } catch (SQLException e) { Log.e(DataHelper.class.getName(), "創建數據庫失敗", e); e.printStackTrace(); } }

@Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, int arg3) { try { TableUtils.dropTable(connectionSource, Hello.class, true); onCreate(db, connectionSource); } catch (SQLException e) { Log.e(DataHelper.class.getName(), "更新數據庫失敗", e); e.printStackTrace(); } }

@Override public void close() { super.close(); helloDao = null; }

public Dao

   <hello, integer="">




     getHelloDataDao() throws SQLException { 

if (helloDao == null) { helloDao = getDao(Hello.class); } return helloDao; } }

   </hello,>




  </hello,></pre>  
</div> 

</div>

在布局文件中添加一個TextView
HelloOrmliteActivity.java中添加對數據庫的操作
 
代碼如下:
package cn.sdx;

import java.sql.SQLException; import java.util.List;

import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; import com.j256.ormlite.dao.Dao;

import android.os.Bundle; import android.widget.TextView; import cn.sdx.model.Hello; import cn.sdx.utils.DataHelper;

public class HelloOrmliteActivity extends OrmLiteBaseActivity

<datahelper>




  { 

/* Called when the activity is first created. / @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) this.findViewById(R.id.output); try { Dao

 <hello, integer="">




   helloDao = getHelper().getHelloDataDao(); 

// 添加數據 for (int i = 0; i < 2; i++) { Hello hello = new Hello("Hello" + i); helloDao.create(hello); } tv.setText(tv.getText() + "\n" + "添加數據完成"); // 查詢添加的數據 List

  <hello>




    hellos = helloDao.queryForAll(); 

for (Hello h : hellos) { tv.setText(tv.getText() + "\n" + h.toString()); } // 刪除數據第一條數據 helloDao.delete(hellos.get(0)); tv.setText(tv.getText() + "\n" + "刪除數據完成"); // 重新查詢數據 hellos = helloDao.queryForAll(); for (Hello h : hellos) { tv.setText(tv.getText() + "\n" + h.toString()); } // 修改數據 Hello h1 = hellos.get(0); h1.setWord("這是修改過的數據"); tv.setText(tv.getText() + "\n" + "修改數據完成"); helloDao.update(h1); // 重新查詢數據 hellos = helloDao.queryForAll(); for (Hello h : hellos) { tv.setText(tv.getText() + "\n" + h.toString()); }

} catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }

} }

  </hello>




 </hello,>




</datahelper></pre> 


以上實現了數據庫操作相關的增刪改,下面是效果:
 

Android中使用ormlite實現持久化(一)--HelloOrmLite

   </div>
 
   OrmLite的功能非常強大,Model類的聲明中非常重要,外鍵約束,非空檢查等等問題都有相對的處理方法。

</div>

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!