实现Android程序中的数据存储
能熟练地使用数据持久化技术实现移动端数据的存储
创建一个工程,设计界面和功能,要求能够实现数据的增删改查等操作。完成项目的调试,并将程序的代码和运行结果记录下来。
Windows+Android Studio
导入背景图片。
在activity_main.xml中放置3个TextView控件分别显示“姓名”、“电话”和“已保存的姓名电话信息”,放置2个EditView控件分别显示姓名的输入框和电话的输入框。放置4个Button控件分别用于显示添加按钮,查询按钮,修改按钮,和删除按钮。
代码如下:
package com.example.database;
//省略导包
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_add, btn_query, btn_update, btn_delete;
private EditText mEtName, mEtPhone;
private TextView mTvShow;
private MyHelper myHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myHelper=new MyHelper(this);
init();
}
private void init() {//绑定7个控件,设置4个监听
mEtName = findViewById(R.id.et_name);
mEtPhone = findViewById(R.id.et_phone);
mTvShow = findViewById(R.id.tv_show);
btn_add = findViewById(R.id.btn_add);
btn_query = findViewById(R.id.btn_query);
btn_update = findViewById(R.id.btn_update);
btn_delete = findViewById(R.id.btn_delete);
btn_add.setOnClickListener(this);
btn_query.setOnClickListener(this);
btn_update.setOnClickListener(this);
btn_delete.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String name, phone;
SQLiteDatabase db;
ContentValues values;
switch (v.getId()) {
case R.id.btn_add: //添加数据
name = mEtName.getText().toString();
phone = mEtPhone.getText().toString();
db = myHelper.getWritableDatabase();//获取可读写的 SQLiteDatabse 对象
values = new ContentValues(); //创建ContentValues 对象
values.put("name", name); //将数据添加到 ContentValues 对象
values.put("phone", phone);
db.insert("information", null, values);
Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show();
db.close();
break;
case R.id.btn_query: //查询数据
db = myHelper.getReadableDatabase();
Cursor cursor = db.query("information", null, null, null, null,
null, null);
if (cursor.getCount() == 0) {
mTvShow.setText("");
Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();
} else {
cursor.moveToFirst();
mTvShow.setText("Name : " + cursor.getString(1) +
" : Tel : " + cursor.getString(2));
}
while (cursor.moveToNext()) {
mTvShow.append("\n" + "Name : " + cursor.getString(1) +
" : Tel : " + cursor.getString(2));
}
cursor.close();
db.close();
break;
case R.id.btn_update: //修改数据
db = myHelper.getWritableDatabase();
values = new ContentValues(); // 要修改的数据
values.put("phone", phone = mEtPhone.getText().toString());
db.update("information", values, "name=?",
new String[]{mEtName.getText().toString()}); // 更新并得到行数
Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show();
db.close();
break;
case R.id.btn_delete: //删除数据
db = myHelper.getReadableDatabase();
db.delete("information", null, null);
Toast.makeText(this, "信息已删除", Toast.LENGTH_SHORT).show();
mTvShow.setText("");
db.close();
break;
}
}
}
5.编写MyHelper.java
package com.example.database;
//省略导包
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(@Nullable Context context) {
super(context,"itcast.db",null,1 );
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE information (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name VERCHAR(20)," +
"phone VARCHAR(20));");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
简述数据库事务的四个基本要素。
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。