Android--数据存储(数据持久化)
2016-08-23 22:33
344 查看
向往常一样,我们先来搞清一下我们需要梳理的知识点:
今天我们使用的数据存储是使用第三方控件orlmlite
我们先来介绍一下ORMLite:
ORMLite是一个轻量级的Java对象关系映射持久层框架。支持包括 MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB和Sqlite等在内的数据库。提供灵活的QueryBuilder来构建复杂的数据查询。强大的抽象DAO类,只需5行代码便能够自动生成SQL来创建和删除数据库表格。
导入第三方控件的好处是直接调用方法,不再需要自己写方法。
点击增加:可以将数据加入到数据库中
点击查询:查询全部信息
点击删除:你可以只输入主键ID,选中进行删除
点击ID查询:输入ID查询单条数据
具体实现步骤:
第一步:建立数据库。可以直接拿去使用
第二步:建立数据库中的数据表
运用注解的方式,在实体类中创建表格
第三步:书写方法
第四步:建立一个Activity然后,通过调用,实现具体功能
编程结束:下面为效果图
今天我们使用的数据存储是使用第三方控件orlmlite
我们先来介绍一下ORMLite:
ORMLite是一个轻量级的Java对象关系映射持久层框架。支持包括 MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB和Sqlite等在内的数据库。提供灵活的QueryBuilder来构建复杂的数据查询。强大的抽象DAO类,只需5行代码便能够自动生成SQL来创建和删除数据库表格。
导入第三方控件的好处是直接调用方法,不再需要自己写方法。
本次工程实现功能介绍
将输入的数据加到数据库中点击增加:可以将数据加入到数据库中
点击查询:查询全部信息
点击删除:你可以只输入主键ID,选中进行删除
点击ID查询:输入ID查询单条数据
具体实现步骤:
第一步:建立数据库。可以直接拿去使用
public class DatabaseHelper extends OrmLiteSqliteOpenHelper { //数据库的名字 private static final String TABLE_NAME = "ormtest.db"; private Map<String, Dao> daos = new HashMap<String, Dao>(); private static DatabaseHelper instance; private DatabaseHelper(Context context) { super(context, TABLE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { //建表、可以建多个表 TableUtils.createTable(connectionSource, User.class); //TableUtils.createTable(connectionSource, User.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { //User实体类 TableUtils.dropTable(connectionSource, User.class, true); onCreate(database, connectionSource); } catch (SQLException e) { e.printStackTrace(); } } /** * 单例获取该Helper * * @param context * @return */ public static synchronized DatabaseHelper getHelper(Context context) { context = context.getApplicationContext(); if (instance == null) { synchronized (DatabaseHelper.class) { if (instance == null) { instance = new DatabaseHelper(context); } } } return instance; } public synchronized Dao getDao(Class clazz) throws SQLException { Dao dao = null; String className = clazz.getSimpleName(); if (daos.containsKey(className)) { dao = daos.get(className); } if (dao == null) { dao = super.getDao(clazz); daos.put(className, dao); } return dao; } /** * 释放资源 */ @Override public void close() { super.close(); for (String key : daos.keySet()) { Dao dao = daos.get(key); dao = null; } } }
第二步:建立数据库中的数据表
运用注解的方式,在实体类中创建表格
//不写tableName = "user",默认找名字都叫User //表名 @DatabaseTable(tableName = "user") public class User { @DatabaseField(id = true)//true为主键 private String userId; //@DatabaseField代表是列 //列名columnName = "username"写数据库里就叫这个名 不写默认属性名叫name @DatabaseField(columnName = "username") private String name; @DatabaseField() private String age; public User(){ } public User(String userId, String name, String age) { this.userId = userId; this.name = name; this.age = age; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
第三步:书写方法
public class UserDaoOrm { private Context context; //调用它自带的Dao private Dao<User,Integer> userDao; private DatabaseHelper helper; public UserDaoOrm(Context context){ this.context = context; helper=DatabaseHelper.getHelper(context); try { userDao=helper.getDao(User.class); } catch (SQLException e) { e.printStackTrace(); } } //添加一条数据 public void add(User user){ try { userDao.createOrUpdate(user); } catch (SQLException e) { e.printStackTrace(); } } //查询全部 public List<User> select(){ try { return userDao.queryForAll(); } catch (SQLException e) { e.printStackTrace(); } return null; } //删除 public void delete(User user){ try { userDao.delete(user); } catch (SQLException e) { e.printStackTrace(); } } //查询一个 public User selectUser(String id){ try { return userDao.queryBuilder() .where() .eq("userId",id) .queryForFirst(); } catch (SQLException e) { e.printStackTrace(); } return null; } }
第四步:建立一个Activity然后,通过调用,实现具体功能
public class UserOrlActivity extends AppCompatActivity { private EditText name,age,id; private Button insert,select,delete,update; private TextView show; private UserDaoOrm userDaoOrm; private Spinner sp; private List<User>list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_orl); name= (EditText) findViewById(R.id.name); age= (EditText) findViewById(R.id.age); id= (EditText) findViewById(R.id.pwd); insert= (Button) findViewById(R.id.add); select= (Button) findViewById(R.id.search); delete= (Button) findViewById(R.id.delete); show= (TextView) findViewById(R.id.show); sp= (Spinner) findViewById(R.id.sp); update= (Button) findViewById(R.id.update); userDaoOrm=new UserDaoOrm(this); //新增方法 insert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { User user=new User(); user.setUserId(id.getText().toString()); user.setName(name.getText().toString()); user.setAge(age.getText().toString()); userDaoOrm.add(user); Toast.makeText(getBaseContext(), "新增成功", Toast.LENGTH_SHORT).show(); } }); select.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { list = userDaoOrm.select(); show.setText(list.toString()); List mydate = new ArrayList(); for (User u : list) { mydate.add(u.getUserId() + ":" + u.getName() + ":" + u.getAge()); ArrayAdapter aa = new ArrayAdapter(getBaseContext(), android.R.layout.simple_list_item_1, mydate); sp.setAdapter(aa); } sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long idd) { String str = sp.getSelectedItem().toString(); if (!str.equals("")) { String userid = str.split(":")[0]; User user = userDaoOrm.selectUser(userid); name.setText(user.getName().toString()); id.setText(user.getUserId().toString()); age.setText(user.getAge().toString()); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }); delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!id.getText().toString().equals("")){ User u=new User(); u.setUserId(id.getText().toString()); userDaoOrm.delete(u); Toast.makeText(getBaseContext(), "删除成功", Toast.LENGTH_SHORT).show(); } } }); //查询一个 update.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String uid=id.getText().toString(); User u=userDaoOrm.selectUser(uid); String a=u.getUserId()+":"+u.getName()+":"+u.getAge(); show.setText(a); } }); } }
编程结束:下面为效果图
相关文章推荐
- Android基础知识(6)—数据持久化之数据存储
- Android 数据持久化(SQLite数据存储)
- Android 数据持久化技术(即数据存储方式)
- Android数据存储
- Android(三) 数据存储之二 SharedPreferences
- android数据存储ContentProvider数据获取ContentResolver
- Android数据存储
- Android数据存储(总结篇)
- Android数据存储
- Android(三)数据存储之XML解析技术
- Android(三)数据存储之三SQLite嵌入式数据库
- Android(五)数据存储之五网络多线程断点下载
- Android学习——数据存储
- Android数据存储——Shared Preferences
- Android 数据存储
- Android(四)数据存储之四ContentProvider
- Android数据存储
- Android的数据存储
- Android的数据存储
- Android(五)数据存储之五网络数据交互