您的位置:首页 > 移动开发 > Android开发

Android ORMLite 框架的入门用法

2016-09-05 10:52 351 查看
        之前在项目中使用数据库存储数据比较少,一般用SharedPreferences就够了,简单的存储一些名称和密码,个人配置信息,但是在当存储的信息量大的时候肯定要用到数据库的,为了提高我们的开发效率。第一次在项目中看到使用 ORMLite
框架来定义存储的数据感觉比较简单,不过要注意一些细节。

    下面简单写一下使用ORMLite 框架的用法

     


   1、下载 ORMLite Jar

        首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.jar 和 ormlite-core-4.48.jar ;

 


   2、写类继承OrmLiteSqliteOpenHelper

              需要实现两个方法:

             1、onCreate(SQLiteDatabase database,ConnectionSource connectionSource)

                   创建表,我们直接使用ormlite提供的TableUtils.createTable(connectionSource, User.class);进行创建~

            2、onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion)

                 更新表,使用ormlite提供的TableUtils.dropTable(connectionSource, User.class, true);进行删除操作~

                 删除完成后,别忘了,创建操作:onCreate(database, connectionSource);
/*    凉菇凉  */
public class ToolDatabase  extends OrmLiteSqliteOpenHelper {
private static String databaseName;
private static int databaseVersion;
private static List<Class>table=new ArrayList<Class>();
private static ToolDatabase dbHelper;
/**
* 必须对外提供public构造函数(实例化不用该方法)
* @param context
*/
public ToolDatabase(Context context){
super(context, databaseName, null, databaseVersion);
}

/**
* 实例化对象
* @return
*/
public static ToolDatabase gainInstance(Context context,String dbName,int version){
if(dbHelper==null){
databaseName=dbName;
databaseVersion=version;
dbHelper=OpenHelperManager.getHelper
(context, ToolDatabase.class);
}
return dbHelper;

}

/**
* 释放数据库的连接
*/
public void releaseAll(){
if(dbHelper!=null){
OpenHelperManager.releaseHelper();
dbHelper = null;
}
}

/**
*   配置实体
* @param cls
*/
public void addEntity(Class cls){
table.add(cls);
}

/**
* 创建表
* @param entity  实体
*/
public void createTable(Class entity){
try {
TableUtils.createTableIfNotExists(getConnectionSource(), entity);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* 删除表
* @param entity 实体
*/
public void dropTable(Class entity) {
try {
TableUtils.dropTable(getConnectionSource(), entity, true);
} catch (SQLException e) {
Log.e(ToolDatabase.class.getName(), "Unable to drop datbases", e);
}
}

/**
* 创建数据库
*/
@Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {

try {
for(Class entity:table){
TableUtils.createTableIfNotExists(getConnectionSource(), entity);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* 更新SQLite数据库
*/
@Override
public void onUpgrade(SQLiteDatabase sqliteDatabase,
ConnectionSource connectionSource, int oldVer, int newVer) {
try {
for (Class entity : table) {
TableUtils.dropTable(connectionSource, entity, true);
}
onCreate(sqliteDatabase, connectionSource);
} catch (SQLException e) {
Log.e(ToolDatabase.class.getName(),
"Unable to upgrade database from version " + oldVer
+ " to new " + newVer, e);
}
}
}
   


     3、在mainactivity中使用增删改的操作

          
public class MainActivity extends Activity  implements OnClickListener{

private EditText et_username, et_email, et_u_username, et_u_email;
private Button btn_add, btn_update, btn_first_page, btn_per_page,btn_next_page, btn_end_page;
private ListView lv_userlist;
private ToolDatabase dbHelper;
private User selectItem = null;
private Dao<User,String>userDao;
public static final String DB_NAME="zftlive";
public static final int DB_VERSION=1;
private UserListAdapter userListAdapter;
private ArrayList<User>users;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_username = (EditText) findViewById(R.id.et_username);
et_email = (EditText) findViewById(R.id.et_email);
et_u_username = (EditText) findViewById(R.id.et_u_username);
et_u_email = (EditText) findViewById(R.id.et_u_email);

btn_add = (Button) findViewById(R.id.btn_add);
btn_update = (Button) findViewById(R.id.btn_update);

btn_first_page = (Button) findViewById(R.id.btn_first_page);
btn_per_page = (Button) findViewById(R.id.btn_per_page);
btn_next_page = (Button) findViewById(R.id.btn_next_page);
btn_end_page = (Button) findViewById(R.id.btn_end_page);

//实例化dbhelper
dbHelper=ToolDatabase.gainInstance(MainActivity.this, DB_NAME, DB_VERSION);
dbHelper.createTable(User.class);

try {
userDao=dbHelper.getDao(User.class);
lv_userlist = (ListView) findViewById(R.id.lv_userlist);
users=(ArrayList<User>) userDao.queryForAll();
//	Log.i("tag", "请求的用户"+users.size()+users.get(0).getUsername()+users.get(0).getEmail());
userListAdapter=new UserListAdapter(MainActivity.this, users);
lv_userlist.setAdapter(userListAdapter);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//	queryUserList();

//点击添加按钮的监听事件
btn_add.setOnClickListener(this);
//点击保存的按钮监听事件
btn_update.setOnClickListener(this);
//查询用户
//	queryUserList();

}

@Override
public void onClick(View v) {
switch (v.getId()) {
//添加数据
case R.id.btn_add:
addData();
break;

case R.id.btn_update:
//点击保存的按钮
updata();
break;

default:
break;
}
}

/**
* 修改保存后的操作
*/

public void updata(){
AndroidDatabaseConnection conn=null;
String userName=et_u_username.getText().toString();
String email=et_u_email.getText().toString();
if(userName==null || userName.equals("")||email==null || email.equals("") ){
Toast.makeText(MainActivity.this , "请选择修改的项", Toast.LENGTH_SHORT).show();
return;
}
try {
if(null!=selectItem){
conn=new AndroidDatabaseConnection(dbHelper.getWritableDatabase(), true);
conn.setAutoCommit(false);
selectItem.setUsername(userName);
selectItem.setEmail(email);
userDao.update(selectItem);
conn.commit(null);
Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();

//刷新列表
queryUserList();
}else{
Toast.makeText(MainActivity.this, "没有选择用户", Toast.LENGTH_SHORT).show();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if(null!=conn){

try {
conn.rollback(null);
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}

}

public static String gainUUID(){
String strUUID = UUID.randomUUID().toString();
strUUID = strUUID.replaceAll("-", "").toLowerCase();
return strUUID;
}

/**
* 添加数据
*/
public void addData(){
AndroidDatabaseConnection conn=null;
String userName=et_username.getText().toString();
String email=et_email.getText().toString();
if(userName==null || userName.equals("")||email==null || email.equals("") ){
Toast.makeText(MainActivity.this , "请输入邮箱", Toast.LENGTH_SHORT).show();
return;
}

conn=new AndroidDatabaseConnection(dbHelper.getWritableDatabase(),true);
conn.setAutoCommit(false);
User user=new User();
user.setId(gainUUID());
user.setUsername(userName);
user.setEmail(email);
try {
userDao.create(user);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
queryUserList();
conn.commit(null);
//清空添加匡
et_username.setText("");
et_email.setText("");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
if(null!=conn){

conn.rollback(null);
conn.close();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}

}

/**
* 查询用户
*/
private void queryUserList(){
users.clear();
try {
ArrayList<User>newUsers=(ArrayList<User>) userDao.queryForAll();
for(int i=0;i<newUsers.size();i++){
User user=newUsers.get(i);
user.setOrderNo(String.valueOf(i+1));
users.add(user);
}
userListAdapter.notifyDataSetChanged();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(dbHelper!=null){
dbHelper.releaseAll();
}

}

public class UserListAdapter extends BasicAdapter<User>{

TextView tv_order_no;
TextView tv_username;
TextView tv_email;
Button btn_update1;
Button btn_del;

public UserListAdapter(Context context, ArrayList<User> mList) {
super(context, mList);
}

@Override
protected int getViewId() {
return R.layout.list_item;
}

@Override
protected void setDate(View view, final User t,
com.dbdemo.BasicAdapter.ViewHolder viewHolder, final int position) {
tv_order_no = (TextView) viewHolder.findView(view,R.id.tv_order_no);
tv_username = (TextView) viewHolder.findView(view,R.id.tv_username);
tv_email =  (TextView) viewHolder.findView(view,R.id.tv_email);
btn_update1 =  (Button) viewHolder.findView(view,R.id.btn_update);
btn_del = (Button) viewHolder.findView(view,R.id.btn_del);
tv_order_no.setText(t.getOrderNo());
tv_username.setText(t.getUsername());
tv_email.setText(t.getEmail());
selectItem=t;
//点击修改按钮
btn_update1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
selectItem=t;
et_u_username.setText(t.getUsername());
et_u_email.setText(t.getEmail());
}
});

//点击删除按钮

btn_del.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
try {
users.remove(position);
userListAdapter.notifyDataSetChanged();
userDao.delete(selectItem);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
}
});

}

}

}


源码链接

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: