使用 ormlite 操作已有数据库

        首先到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;
		}
	}
}


转载于:https://my.oschina.net/oldfeel/blog/191797

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值