Android ORMLite 框架的入门用法
2016-09-05 10:52
351 查看
之前在项目中使用数据库存储数据比较少,一般用SharedPreferences就够了,简单的存储一些名称和密码,个人配置信息,但是在当存储的信息量大的时候肯定要用到数据库的,为了提高我们的开发效率。第一次在项目中看到使用 ORMLite
框架来定义存储的数据感觉比较简单,不过要注意一些细节。
下面简单写一下使用ORMLite 框架的用法
首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.jar 和 ormlite-core-4.48.jar ;
需要实现两个方法:
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);
框架来定义存储的数据感觉比较简单,不过要注意一些细节。
下面简单写一下使用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(); } }); } } }
源码链接
相关文章推荐
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- 项目中 Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite框架入门用法教程二(两张表关联外键)
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法