Android中使用ormlite實現持久化(一)--HelloOrmLite
Android中內置了sqlite,但是常用的開發語言java是面向對象的,而數據庫是關系型的,二者之間的轉化每次都很麻煩(主 要是我對sql語言不熟悉)。而Java Web開發中有很多orm框架,但是想直接放到Android上用有些麻煩。嘗試了一下找Android的orm框架,說實話還有好幾個。
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.javapackage 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>
在布局文件中添加一個TextViewHelloOrmliteActivity.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>
以上實現了數據庫操作相關的增刪改,下面是效果:</div>
OrmLite的功能非常強大,Model類的聲明中非常重要,外鍵約束,非空檢查等等問題都有相對的處理方法。
</div>本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!相關經驗
相關資訊