转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39122981,本文出自【张鸿洋的博客】
上一篇已经对ORMLite框架做了简单的介绍:Android ORMLite 框架的入门用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用法。
通过上一篇的了解,我们使用ORMLite,需要自己写一个DatabaseHelper去继承OrmLiteSqliteOpenHelper,下面我们首先给出一个我认为比较靠谱的Helper的写法:
1、DatabaseHelper **[java]** [view plain](http://blog.csdn.net/lmj623565791/article/details/39122981#)[copy](http://blog.csdn.net/lmj623565791/article/details/39122981#)[](https://code.csdn.net/snippets/465469)[](https://code.csdn.net/snippets/465469/fork) <div> <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1"> </embed> </div> </div> - <span class="keyword">package</span> com.zhy.zhy_ormlite.db; - - <span class="keyword">import</span> java.sql.SQLException; - <span class="keyword">import</span> java.util.HashMap; - <span class="keyword">import</span> java.util.Map; - - <span class="keyword">import</span> android.content.Context; - <span class="keyword">import</span> android.database.sqlite.SQLiteDatabase; - - <span class="keyword">import</span> com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; - <span class="keyword">import</span> com.j256.ormlite.dao.Dao; - <span class="keyword">import</span> com.j256.ormlite.support.ConnectionSource; - <span class="keyword">import</span> com.j256.ormlite.table.TableUtils; - <span class="keyword">import</span> com.zhy.zhy_ormlite.bean.Article; - <span class="keyword">import</span> com.zhy.zhy_ormlite.bean.Student; - <span class="keyword">import</span> com.zhy.zhy_ormlite.bean.User; - - <span class="keyword">public</span> <span class="keyword">class</span> DatabaseHelper <span class="keyword">extends</span> OrmLiteSqliteOpenHelper - { - <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String TABLE_NAME = <span class="string">“sqlite-test.db”</span>; - - <span class="keyword">private</span> Map<String, Dao> daos = <span class="keyword">new</span> HashMap<String, Dao>(); - - <span class="keyword">private</span> DatabaseHelper(Context context) - { - <span class="keyword">super</span>(context, TABLE_NAME, <span class="keyword">null</span>, <span class="number">4</span>); - } - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onCreate(SQLiteDatabase database, - ConnectionSource connectionSource) - { - <span class="keyword">try</span> - { - TableUtils.createTable(connectionSource, User.<span class="keyword">class</span>); - TableUtils.createTable(connectionSource, Article.<span class="keyword">class</span>); - TableUtils.createTable(connectionSource, Student.<span class="keyword">class</span>); - } <span class="keyword">catch</span> (SQLException e) - { - e.printStackTrace(); - } - } - - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> onUpgrade(SQLiteDatabase database, - ConnectionSource connectionSource, <span class="keyword">int</span> oldVersion, <span class="keyword">int</span> newVersion) - { - <span class="keyword">try</span> - { - TableUtils.dropTable(connectionSource, User.<span class="keyword">class</span>, <span class="keyword">true</span>); - TableUtils.dropTable(connectionSource, Article.<span class="keyword">class</span>, <span class="keyword">true</span>); - TableUtils.dropTable(connectionSource, Student.<span class="keyword">class</span>, <span class="keyword">true</span>); - onCreate(database, connectionSource); - } <span class="keyword">catch</span> (SQLException e) - { - e.printStackTrace(); - } - } - - <span class="keyword">private</span> <span class="keyword">static</span> DatabaseHelper instance; - - <span class="comment">/**</span> - <span class="comment"> * 单例获取该Helper</span> - <span class="comment"> * </span> - <span class="comment"> * @param context</span> - <span class="comment"> * @return</span> - <span class="comment"> */</span> - <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">synchronized</span> DatabaseHelper getHelper(Context context) - { - context = context.getApplicationContext(); - <span class="keyword">if</span> (instance == <span class="keyword">null</span>) - { - <span class="keyword">synchronized</span> (DatabaseHelper.<span class="keyword">class</span>) - { - <span class="keyword">if</span> (instance == <span class="keyword">null</span>) - instance = <span class="keyword">new</span> DatabaseHelper(context); - } - } - - <span class="keyword">return</span> instance; - } - - <span class="keyword">public</span> <span class="keyword">synchronized</span> Dao getDao(Class clazz) <span class="keyword">throws</span> SQLException - { - Dao dao = <span class="keyword">null</span>; - String className = clazz.getSimpleName(); - - <span class="keyword">if</span> (daos.containsKey(className)) - { - dao = daos.get(className); - } - <span class="keyword">if</span> (dao == <span class="keyword">null</span>) - { - dao = <span class="keyword">super</span>.getDao(clazz); - daos.put(className, dao); - } - <span class="keyword">return</span> dao; - } - - <span class="comment">/**</span> - <span class="comment"> * 释放资源</span> - <span class="comment"> */</span> - <span class="annotation">@Override</span> - <span class="keyword">public</span> <span class="keyword">void</span> close() - { - <span class="keyword">super</span>.close(); - - <span class="keyword">for</span> (String key : daos.keySet()) - { - Dao dao = daos.get(key); - dao = <span class="keyword">null</span>; - } - } - - } 1、整个DatabaseHelper使用单例只对外公布出一个对象,保证app中只存在一个SQLite Connection , 参考文章:http://www.touchlab.co/2011/10/single-sqlite-connection/
...