android开发--ormlite

弱龄寄事外,委怀在琴书。这篇文章主要讲述android开发--ormlite相关的知识,希望能为你提供帮助。
  ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。
官方网站:http://ormlite.com/ 
如果需要开发android,只需要下载core和android两个jar包:

android开发--ormlite

文章图片


ORMlite的使用
1,建立映射关系    
Ormlite与数据库的映射关系式通过注释来说明的。
注释分为对于表的和对于单个列的:@DatabaseTable  ,注释表的,  @DatabaseField  注释单个列的。
·  首先注释:table,@
DatabaseTable  如果默认为类名的话,后面不需要添加类名注释。
【android开发--ormlite】·  然后:确定需要的字段,在字段上面添加注释:@DatabaseField  如果对字段有特别的要求,那么添加以下相关的注释,例如id。

@DatabaseTable(tableName="t_message") public class Message {@DatabaseField(generatedId=true) private int id; @DatabaseField(columnName="tou1") private String tou1; @DatabaseField(columnName="userName") private String userName; @DatabaseField(columnName="lastMessage") private String lastMessage; @DatabaseField(columnName="datetime") private String datetime; public String getTou1() { return tou1; } public void setTou1(String tou1) { this.tou1 = tou1; }

2,建立数据库和基本的工具
  在Android的开发中,google原版封装了一个SqliteOpenHelper,供开发者调用,在OrmLite中,对原版的工具进行了加强,提供一个继承自SqliteOpenHelper的OrmLiteSqliteOpenHelper工具。 
像android一样,我们继承这个工具类。 
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {private static final String DB_NAME = "mydata.db"; // 数据库名称 private static final int version = 2; // 数据库版本 //定义每一张表的成员变量,其中一个功能:关闭helper,所有DAO对象清理 private Dao< Message, Integer> messageDao; public Dao< Message, Integer> getMessageDao() { if (messageDao==null){ try { messageDao = getDao(Message.class); } catch (SQLException e) { e.printStackTrace(); } } return messageDao; }public DatabaseHelper(Context context) { super(context, DB_NAME, null, version); }/* * 1.此方法,不会自定执行,因为它不是回调函数 * 2.最好也不要自己调用,因为只应该执行1次 */ @Override public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) { // TODO Auto-generated method stub}/* * 此方法,不会自定执行,因为它不是回调函数 */ @Override public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, int arg3) { // TODO Auto-generated method stub }

MyDatabaseOpenHelper类

public class MyDatabaseOpenHelper extends SQLiteOpenHelper {private static final String DB_NAME = "mydata.db"; // 数据库名称 private static final int version = 2; // 数据库版本public MyDatabaseOpenHelper(Context context) { super(context, DB_NAME, null, version); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub // 编写【从0开始到最新状态】建表语句 Log.i("hi", "没有数据库,创建数据库,创建v2.0成功"); String sql_message = "create table t_message (id int primary key,tou1varchar(50),userName varchar(50),lastMessage varchar(50),datetimevarchar(50))"; String sql_init_1 = "insert into t_message values (1,‘abc‘,‘abc1‘,‘abcd1‘,‘hi1‘)"; String sql_init_2 = "insert into t_message values (2,‘abc‘,‘abc2‘,‘abcd2‘,‘hi1‘)"; String sql_init_3 = "insert into t_message values (3,‘abc‘,‘abc2‘,‘abcd2‘,‘hi1‘)"; db.execSQL(sql_message); db.execSQL(sql_init_1); db.execSQL(sql_init_2); db.execSQL(sql_init_3); }

MainActivity类,listview显示数据
public class MainActivity extends Activity {private SimpleAdapter sa; private ListView lv; private List< Message> messageList = new ArrayList< Message> (); private List< Map< String,Object> > messageList2 = new ArrayList< Map< String,Object> > (); private List< Message> messageList3; //用于ORMLite 的演示private DatabaseHelper db_helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weixin); //此3行代码用于创建表结构,以及初始化数据 MyDatabaseOpenHelper helper = new MyDatabaseOpenHelper(MainActivity.this); SQLiteDatabase db = helper.getWritableDatabase(); db.close(); lv = (ListView)findViewById(R.id.listView1); sa = new SimpleAdapter(this, messageList2,//data 不仅仅是数据,而是一个与界面耦合的数据混合体 R.layout.listview_item_layout, new String[] {"tou","userName","lastMessage","datetime"},//from 从来来 new int[] {R.id.imageView1,R.id.tv_userName,R.id.tv_lastMessage,R.id.tv_datetime}//to 到那里去 ); lv.setAdapter(sa); lv.setOnItemClickListener(new OnItemClickListener() {@Override public void onItemClick(AdapterView< ?> parent, View view, int position, long id) { Map< String,Object> item = messageList2.get(position); item.put("userName", "赵本山"+position); sa.notifyDataSetChanged(); //Toast.makeText(MainActivity.this, (String)item.get("userName"), Toast.LENGTH_SHORT).show(); } }); //UI呈现在眼前 @Override protected void onResume(){ Log.i("ok", "onResume,界面出现了"); //使用ORMLite db_helper = new DatabaseHelper(this); Dao< Message, Integer> message_dao = db_helper.getMessageDao(); try { messageList3 = message_dao.queryForAll(); //Log.i("ormlite", "记录条数:"+messageList3.size()); String t = "记录条数:"+messageList3.size(); Toast.makeText(this, t, Toast.LENGTH_LONG).show(); } catch (SQLException e) { String t = "记出错:"+e.getMessage(); Toast.makeText(this, t, Toast.LENGTH_LONG).show(); }for (int i = 0; i < messageList3.size(); i++) {//定义一个界面与数据的混合体,一个item代表一行记录 Map< String,Object> item= new HashMap< String,Object> (); //一行记录,包含多个控件 item.put("tou", R.drawable.tou1); item.put("userName", messageList3.get(i).getUserName()+i); item.put("lastMessage", messageList3.get(i).getLastMessage()); item.put("datetime",messageList3.get(i).getDatetime()); messageList2.add(item); } super.onResume(); }

效果图
android开发--ormlite

文章图片

注:ORMLite还提供了一些基类ORMLiteBaseActivity,ORMLiteBaseService之类的,便于数据库操作的,





    推荐阅读