使用 ormlite 操作已有数据库

来源:互联网 发布:免费抠图软件 编辑:程序博客网 时间:2024/05/17 02:04

http://my.oschina.net/oldfeel/blog/191797

 首先到http://ormlite.com/releases/下载ormlite-android-4.48.jar 和 ormlite-core-4.48.jar到项目libs目录下.


        然后生成一个数据库 survey.db(名字随意)放入/res/raw/目录下.


        该数据库下包含表


CREATE TABLE USERS ( 
    ID        TEXT NOT NULL
                   UNIQUE,
    USER_NAME TEXT NOT NULL
                   UNIQUE,
    PASSWORD  TEXT NOT NULL,
    PRIMARY KEY ( ID ) 
);
        跟据此表就可以在android项目下创建相应的class了.


@DatabaseTable(tableName = "users")
public class Users {
        // id = true 必须要有.
    @DatabaseField(columnName = "ID", id = true)
    private String ID;
    @DatabaseField(columnName = "USER_NAME")
    private String USER_NAME;
    @DatabaseField(columnName = "PASSWORD")
    private String PASSWORD;


    public String getID() {
        return ID;
    }


    public void setID(String iD) {
        ID = iD;
    }


    public String getUSER_NAME() {
        return USER_NAME;
    }


    public void setUSER_NAME(String uSER_NAME) {
        USER_NAME = uSER_NAME;
    }


    public String getPASSWORD() {
        return PASSWORD;
    }


    public void setPASSWORD(String pASSWORD) {
        PASSWORD = pASSWORD;
    }


    public Users() {


    }


    public Users(String iD, String uSER_NAME, String pASSWORD) {
        super();
        ID = iD;
        USER_NAME = uSER_NAME;
        PASSWORD = pASSWORD;
    }


}
        用ormlite操作数据库非常简单.就是生成dao.然后对此dao操作.现在封装一个生成dao的dbhelper


public class DBHelper {
    public static final String DB_DIR = Environment
            .getExternalStorageDirectory().getAbsolutePath() + "/survey/";
    public static final String DB_NAME = "survey.db";
    private AndroidConnectionSource connectionSource;
    private static DBHelper dbHelper;


    public static DBHelper getInstance(Context context) {
        if (dbHelper == null) {
            dbHelper = new DBHelper(context);
        }
        return dbHelper;
    }


    public DBHelper(Context context) {
        File dir = new File(DB_DIR);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        File file = new File(dir, DB_NAME);
        if (!file.exists()) {
            try {
                loadFile(context, file, R.raw.survey);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        SQLiteDatabase db = SQLiteDatabase.openDatabase(file.getPath(), null,
                SQLiteDatabase.OPEN_READWRITE);
        connectionSource = new AndroidConnectionSource(db);
    }


    /**
     * 下在文件到指定目录
     * 
     * @param context
     * @param file
     *            sd卡中的文件
     * @param id
     *            raw中的文件id
     * @throws IOException
     */
    public static void loadFile(Context context, File file, int id)
            throws IOException {
        InputStream is = context.getResources().openRawResource(id);
        FileOutputStream fos = new FileOutputStream(file);
        byte[] buffer = new byte[1024];
        int count = 0;
        while ((count = is.read(buffer)) > 0) {
            fos.write(buffer, 0, count);
        }
        fos.close();
        is.close();
    }


    /**
     * 获取dao
     * 
     * @param clazz
     * @return
     * @throws SQLException
     */
    public <D extends Dao<T, ?>, T> D getDao(Class<T> clazz) throws Exception {
        if (connectionSource != null) {
            return DaoManager.createDao(connectionSource, clazz);
        }
        return null;
    }
}
        在activity里就可以操作了


public class MainActivity extends Activity {
    DBHelper dbHelper;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = DBHelper.getInstance(this);
        try {
            Dao<Users, String> dao = dbHelper.getDao(Users.class);
            Users users1 = new Users("123", "456", "789");
            dao.createOrUpdate(users1);
            Users users2 = new Users("qwe", "asd", "zxc");
            dao.createOrUpdate(users2);
            List<Users> userList = dao.queryForAll();
            for (int i = 0; i < userList.size(); i++) {
                LogUtil.showLog(userList.get(i).getUSER_NAME());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (dbHelper != null) {
            OpenHelperManager.releaseHelper();
            dbHelper = null;
        }
    }
}

0 0
原创粉丝点击