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

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查询单条数据

具体实现步骤:

第一步:建立数据库。可以直接拿去使用

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);

}
});
}
}


编程结束:下面为效果图





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