[Android学习系列8]数据库ormlite笔记
一.下载包
把core包 和 android包 build path到项目里
二.参考资料
http://blog.csdn.net/joker_zhou/article/details/7869244
https://www.youtube.com/watch?v=beb-n2yq0kM&hd=1
三.自己写的
1.写一个类代表一个表
package com.example.test_ormlite;
import com.j256.ormlite.field.DatabaseField;
public class Person {
public static final String ID = "person_id";
public static final String Name = "person_name";
public static final String Info = "persin_info";
@DatabaseField(useGetSet = true , columnName = ID , generatedId = true)
private int id;
@DatabaseField(useGetSet = true , columnName = Name)
private String name;
@DatabaseField(useGetSet = true , columnName = Info)
private String info;
//必须提供一个无参数的构造函数,这个不能少
public Person() {}
//自定义构造函数
public Person( String name , String info) {
//super();
this.name = name;
this.info = info;
}
@Override
//方便输出查看
public String toString() {
return "id:" + id + " ,name:" + name + " ,info:" + info;
}
//get,set方法不能漏 之前就是漏了 结果报错无法运行
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
2.在res目录新建一个raw文件夹
继承一个OrmLiteConfigUtil类, 用来生成配置文件
package com.example.test_ormlite;
import java.io.IOException;
import java.sql.SQLException;
import com.j256.ormlite.android.apptools.OrmLiteConfigUtil;
public class MyConfigUtil extends OrmLiteConfigUtil {
public static final Class<?>[] classes = new Class[]{ Person.class };
public static void main(String[] args) throws SQLException,IOException {
writeConfigFile("my_ormlite_config.txt",classes);
}
}
以j2se的形式run这个类, 对MyConfigUtil.java 进行 run as 的配置


3.第2步完成后会在raw里面生成表的配置文件my_ormlite_config.txt,然后我们就可以写一个DatabaseHelper加载它
并在里面实现创建DAO的方法
package com.example.test_ormlite;
import java.sql.SQLException;
import android.R.integer;
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.dao.RuntimeExceptionDao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
public class MyDatabaseHelper extends OrmLiteSqliteOpenHelper {
public static final String DATABASE_NAME = "mydatabase.db";
public static final int DATABASE_VERSION = 1;
private Dao<Person,Integer> personDao = null;
private RuntimeExceptionDao<Person, Integer> personRuntimeDao = null;
public MyDatabaseHelper(Context context) {
//加载数据库 和 表的配置文件
super(context, DATABASE_NAME, null , R.raw.my_ormlite_config);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource con) {
try {
//创建表
TableUtils.createTable(con, Person.class);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource con, int oldVersion,
int newVersion) {
try {
//删除表
TableUtils.dropTable(con, Person.class, true);
//重建表
TableUtils.createTable(con, Person.class);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//person类的DAO
public Dao<Person, Integer> getDao() throws SQLException {
if( personDao == null )
{
personDao = getDao(Person.class);
}
return personDao;
}
//person类的RuntimeDao
public RuntimeExceptionDao<Person, Integer> getPersonRuntimeExceptionDao() {
if( personRuntimeDao == null )
{
personRuntimeDao = getRuntimeExceptionDao(Person.class);
}
return personRuntimeDao;
}
}
4.然后就可以在activity里面做一些测试了
package com.example.test_ormlite;
import java.util.List;
import com.j256.ormlite.android.apptools.OpenHelperManager;
import com.j256.ormlite.dao.RuntimeExceptionDao;
import android.os.Bundle;
import android.app.Activity;
import android.database.DatabaseUtils;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
MyDatabaseHelper myDbHelper = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
doSomeTestWithOrmlite();
}
private void doSomeTestWithOrmlite() {
//建立databaseHelper
myDbHelper = OpenHelperManager.getHelper(this,MyDatabaseHelper.class);
//用databaseHelper 建立 dao
RuntimeExceptionDao<Person, Integer> personDao = myDbHelper.getPersonRuntimeExceptionDao();
//插入三条数据
personDao.create(new Person("姓名1","猜猜他是谁") );
personDao.create(new Person("姓名2","猜猜他是谁") );
personDao.create(new Person("姓名s","猜猜他是谁") );
//输出全部数据
List<Person> list_person = personDao.queryForAll();
Log.d( "mytag", list_person.toString() );
//释放helper
OpenHelperManager.releaseHelper();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
浙公网安备 33010602011771号