首页 > 代码库 > android ORMlite的应用

android ORMlite的应用

  ORMLite -轻量级的对象关系映射(ORM)

    如果你需要在android中使用ORMLite 你需要进入官方网站 http://ormlite.com/ 中下载

      技术分享

技术分享

 

     下载了这两个包以后,你还需要在对应的项目中配置这两个包

技术分享

  然后你就可以开始写你的数据库语句了!!!

  我们一步一步来建立一个简单的ORMLite的小例子

    我们要实现的也就是利用ORMLite来呈现一个列表集合

  先来看布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/list_show_Person"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

  既然是要操作数据库,那么就得创建数据库

技术分享

package com.example.learn_ormlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class SQLiteHelper extends SQLiteOpenHelper {

    private final static String DbName="test_Person.db";
    private static int version=1;
    public SQLiteHelper(Context context) {
        super(context, DbName, null, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
    String sql="create table person(id integer primary key autoincrement,name text)";
    db.execSQL(sql);
    ContentValues con=new ContentValues();
    con.put("name", "text1");
    db.insert("person",null,con);
    db.insert("person",null,con);
    db.insert("person",null,con);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}

然后我们来配置这次的主角,技术分享

package com.example.learn_ormlite;

import java.sql.SQLException;

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

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;

public class myORMLiteHelper extends OrmLiteSqliteOpenHelper {


    private final static String DbName="test_Person.db";
    private static int version=1;
    private  Dao<Person,Integer> person_db=null;
    public myORMLiteHelper(Context context) {
        super(context, DbName, null, version);
    }

    @Override
    public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
            
        
    }
    public  Dao<Person,Integer> getPerson()
    {
        if(person_db==null)
            try {
                person_db=getDao(Person.class);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        return person_db;
    }
    @Override
    public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
            int arg3) {
    }
    @Override
    public void close() {
        if(person_db!=null)
            person_db=null;
        super.close();
    }

}

我们可以看到,上面用红色标记出来的,说明了ORMLite是自动去找到这个数据库的,也就是说用数据库名称和版本绑定数据库,

  但是现在我们只是告诉它我们要得到一个东西,但是怎么得到的规则还没有定下来,所有,我们还得还定义规则

  技术分享

package com.example.learn_ormlite;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable(tableName = "person")
public class Person {

    @DatabaseField(id = true)
    private Integer id;
    @DatabaseField(columnName="name")
    private String name;
    public Person()
    {
    }
    public Person(String name)
    {
        this.name=name;
    }
    public void setUid(int uid) {
        this.id = uid;
    }
    public Integer getUid() {
        return id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return name;
    }
}

我们所使用的规则就是,在需要映射的字段上面添加一些属性,当然这些属性必须得和数据库里面的关系相对应,

然后我们就可以使用这个表了

技术分享

package com.example.learn_ormlite;

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

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.j256.ormlite.dao.Dao;


public class MainActivity extends Activity {

    private ListView listShow;
    private List<Person> Tperson=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SQLiteHelper sql=new SQLiteHelper(this);
        SQLiteDatabase  db= sql.getWritableDatabase();
        db.close();
        listShow=(ListView) findViewById(R.id.list_show_Person);
        myORMLiteHelper ml=new myORMLiteHelper(this);
        
        Dao<Person,Integer> db_person=  ml.getPerson();
        try {
            Tperson= db_person.queryForAll();
            listShow.setAdapter(new ArrayAdapter<Person>(MainActivity.this,android.R.layout.simple_list_item_1,Tperson){});
            
        } catch (SQLException e) {
            e.printStackTrace();
        }       
    }
}

 

android ORMlite的应用