android開發--ormlite

來源:互聯網
上載者:User

標籤:耦合   values   ring   hash   object   img   結構   har   建表   

   ORMlite是類似hibernate的對象映射架構,主要面向java語言,同時,是時下最流行的android面向資料庫的的編程工具。
  官方網站:http://ormlite.com/ 
  如果需要開發android,只需要下載core和android兩個jar包:

    

  

  ORMlite的使用

  1,建立映射關係 

 

  Ormlite與資料庫的映射關係式通過注釋來說明的。
  注釋分為對於表的和對於單個列的:@DatabaseTable ,注釋表的, @DatabaseField 注釋單個列的。

·   首先注釋:table,@

  DatabaseTable 如果預設為類名的話,後面不需要添加類名注釋。

·   然後:確定需要的欄位,在欄位上面添加註釋:@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,tou1  varchar(50),userName varchar(50),lastMessage varchar(50),datetime  varchar(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();    }

    

    

    註:ORMLite還提供了一些基類ORMLiteBaseActivity,ORMLiteBaseService之類的,便於資料庫操作的,

android開發--ormlite

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.