文档章节

使用 ormlite 操作已有数据库

oldfeel
 oldfeel
发布于 2014/01/09 17:13
字数 553
阅读 3895
收藏 4

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


© 著作权归作者所有

oldfeel
粉丝 45
博文 78
码字总数 17297
作品 0
防城港
个人站长
私信 提问
Android ORMLite 框架的入门用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lmj623565791/article/details/39121377 转载请标明出处:http://blog.csdn.net/lmj623565791/article/detai...

鸿洋_
2014/09/07
0
0
Ormlite在一般java环境中操作Sqlite

简介 最开始接触ormlite是在android的开发中,ormlite的简单便利让我印象深刻。 这几天在研究顾客购物行为,需要使用到数据库,但是对于数据库的速度什么的要求不大,我首先想到的是Ormlite...

长平狐
2013/11/25
2.1K
0
android 在Fragment 中使用ormlite 数据库

在ormlite官方的demo中,Activity 中访问数据库是extends ormliteBaseActivity. 那在Fragment中怎么使用呢?(ormlite 官网:http://ormlite.com/) 简单的: public class OrmLiteFragment...

iSnowFlake
2015/11/09
0
0
ORMLite 实现数据库操作

车主个人信息和汽车信息除了保存在服务器数据库中同时保存在本地SQLite中, 本项目中db包下使用了ORMLite 实现数据库操作。 Android ORMLite 框架的入门用法 http://blog.csdn.net/lmj623565...

webjie
2016/06/03
2
0
android数据库持久化框架

android数据库持久化框架 前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写...

ZHL
2012/09/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部