android orm映射框架(类似hibernate)基本使用

来源:互联网 发布:用g71编程内孔 编辑:程序博客网 时间:2024/06/05 00:13

转载自 http://www.2cto.com/kf/201208/150354.html

android  orm映射框架,可像hibernate一样操作数据库。  以下代码是我从网上摘录下来的,仅供参考.

 


package com.cng.utils; 
 
import java.sql.SQLException; 
 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.util.Log; 
 
import com.cng.modal.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; 
    } 

 

package com.cng; 
 
import java.sql.SQLException; 
import java.util.List; 
 
import com.cng.modal.Hello; 
import com.cng.utils.DataHelper; 
import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; 
import com.j256.ormlite.dao.Dao; 
 
import android.os.Bundle; 
import android.widget.TextView; 
 
 
 
 
public class OrmliteLoginActivity extends OrmLiteBaseActivity<DataHelper> 

    @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(); 
        } 
 
    } 

  package com.cng.modal; 
 
import android.R.integer; 
 
import com.j256.ormlite.field.DatabaseField; 
 
public class Hello 

    @DatabaseField(generatedId = true,unique=true) 
    int id; 
    @DatabaseField 
    String word; 
    //这是必须加的,否则会出错 
    public Hello(){} 
    public int getId() 
    { 
        return id; 
    } 
    public Hello(String word) 
    { 
        super(); 
        this.word = word; 
    } 
    public void setId(int id) 
    { 
        this.id = id; 
    } 
 
    public String getWord() 
    { 
        return word; 
    } 
 
    public void setWord(String word) 
    { 
        this.word = word; 
    } 
 
    @Override 
    public String toString() 
    { 
        StringBuilder sb = new StringBuilder(); 
        sb.append("id=").append(id); 
        sb.append(" ,word=").append(word); 
        return sb.toString(); 
    } 
 www.2cto.com

 

 

就这三个类,datahelper是操作数据库的类,可新建,更新表,Hello是一个映射到数据库表的类,具体的看api  文档的下载地址是http://ormlite.com/releases/(其中的jar包也在这里下载)   OrmliteLoginActivity就是activity类,它没继承activity,而是继承了OrmLiteBaseActivity类。

原创粉丝点击