Android ORMLite 框架的入门用法


        之前在项目中使用数据库存储数据比较少,一般用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();
			}
		});
           
		}
		
		
				
		
    }


}

源码链接

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值