Android数据库操作实例:一次学会数据库操作 (android数据库操作实例)
在Android应用开发中,使用数据库进行数据存储和管理是非常常见的操作。因此,熟练掌握Android数据库操作技术是每个Android开发者必须具备的基本技能之一。
本文将通过一个具体的案例来介绍Android数据库操作的基本知识、操作流程和技巧,帮助初学者快速入门。
一、案例介绍
在本例中,我们将创建一个简单的学生信息管理应用,用来记录和管理学生的基本信息。我们可以通过该应用添加、编辑、删除和查询学生信息。
二、数据库操作基础知识
在进行数据库操作之前,我们需要先了解一些基础知识,包括数据库的概念、创建数据库和数据表、以及基本的数据操作语句。
1.数据库概念
数据库是一种集中存储和管理数据的系统,它采用一定的数据结构,以及相应的操作和管理方法,来确保数据的有效性、正确性、安全性和可用性。在Android应用中,我们通常使用SQLite数据库来进行数据存储和管理。
2.创建数据库
我们可以使用Android提供的SQLiteOpenHelper类来创建和管理数据库,该类提供了创建数据库、升级数据库和降级数据库的方法。
在使用该类创建数据库时,我们需要继承SQLiteOpenHelper类,并实现其中的两个方法onCreate()和onUpgrade(),其中onCreate()方法用于创建数据库和数据表,onUpgrade()方法用于升级数据库和数据表。
下面是一个简单的创建数据库的示例代码:
“`
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = “student.db”;
private static final int DB_VERSION = 1;
private static final String CREATE_TABLE = “CREATE TABLE student (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)”;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//升级数据库操作
}
}
“`
上述代码通过SQLiteOpenHelper类创建了一个名为student.db,版本号为1的数据库,并创建了一个名为student的数据表。其中_id为自增主键,name和age为普通字段。
3.基本数据操作语句
在进行数据操作时,我们需要了解一些基本的数据操作语句,包括插入数据、查询数据、修改数据和删除数据。
下面是一些常用的数据操作语句:
插入数据:
“`
INSERT INTO table_name (column1, column2, column3,…) VALUES (value1, value2, value3,…)
“`
查询数据:
“`
SELECT * FROM table_name
SELECT column1, column2, column3,… FROM table_name WHERE condition ORDER BY column ASC|DESC
“`
修改数据:
“`
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition
“`
删除数据:
“`
DELETE FROM table_name WHERE condition
“`
三、实现学生信息管理应用
在了解了数据库操作的基础知识之后,我们可以开始实现学生信息管理应用了。在本例中,我们将使用上述创建数据库的代码,并创建一个包含添加、编辑、删除和查询学生信息的应用。
1.新建项目
在Android Studio中新建一个项目,并添加一个MnActivity和一个DBHelper类。在DBHelper类中,我们需要实现上述的创建数据库的代码,在MnActivity中,我们将添加四个按钮控件,用于添加、编辑、删除和查询学生信息。
2.添加学生信息
在添加学生信息时,我们需要通过EditText控件获取学生的姓名和年龄,并将其保存到数据表中。具体实现代码如下:
“`
//获取输入框的内容
String name = etName.getText().toString().trim();
int age = Integer.parseInt(etAge.getText().toString().trim());
//获取可写的数据库对象
db = dbHelper.getWritableDatabase();
//创建ContentValues对象并添加数据
ContentValues values = new ContentValues();
values.put(“name”, name);
values.put(“age”, age);
//插入数据
long id = db.insert(“student”, null, values);
if(id != -1){
Toast.makeText(this, “添加成功”, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, “添加失败”, Toast.LENGTH_SHORT).show();
}
“`
3.编辑学生信息
在编辑学生信息时,我们需要通过ListView展示已有的学生信息,并通过点击ListView中的项来编辑该项学生的信息。具体实现代码如下:
首先我们需要通过ListView加载已有的学生信息:
“`
//获取可读的数据库对象
db = dbHelper.getReadableDatabase();
//查询数据
Cursor cursor = db.query(“student”, null, null, null, null, null, null);
//适配器
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_expandable_list_item_2,
cursor,
new String[]{“name”, “age”},
new int[]{android.R.id.text1, android.R.id.text2},
SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER
);
lvStudents.setAdapter(adapter);
“`
然后通过监听ListView的项点击事件,获取该项学生的_id,并从数据库中查询该学生的姓名和年龄,并将其显示到EditText控件中:
“`
lvStudents.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, final int position, long id) {
//获取_id
Cursor cursor = (Cursor) lvStudents.getItemAtPosition(position);
final int _id = cursor.getInt(cursor.getColumnIndex(“_id”));
//获取可读的数据库对象
db = dbHelper.getReadableDatabase();
//查询数据
Cursor c = db.query(“student”, new String[]{“_id”, “name”, “age”}, “_id=?”, new String[]{String.valueOf(_id)}, null, null, null);
if(c.moveToFirst()){
//获取数据
String name = c.getString(c.getColumnIndex(“name”));
int age = c.getInt(c.getColumnIndex(“age”));
//将数据显示到输入框中
etName.setText(name);
etAge.setText(String.valueOf(age));
//更新记录
btnAdd.setText(“更新”);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//更新记录
String name = etName.getText().toString().trim();
int age = Integer.parseInt(etAge.getText().toString().trim());
db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(“name”, name);
values.put(“age”, age);
int rows = db.update(“student”, values, “_id=?”, new String[]{String.valueOf(_id)});
if(rows > 0){
Toast.makeText(MnActivity.this, “更新成功”, Toast.LENGTH_SHORT).show();
etName.setText(“”);
etAge.setText(“”);
btnAdd.setText(“添加”);
}else{
Toast.makeText(MnActivity.this, “更新失败”, Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
“`
4.删除学生信息
在删除学生信息时,我们需要通过EditText控件获取学生的姓名和年龄,并将其从数据表中删除。具体实现代码如下:
“`
String name = etName.getText().toString().trim();
int age = Integer.parseInt(etAge.getText().toString().trim());
//获取可写的数据库对象
db = dbHelper.getWritableDatabase();
//删除数据
int rows = db.delete(“student”, “name=? and age=?”, new String[]{name, String.valueOf(age)});
if(rows > 0){
Toast.makeText(this, “删除成功”, Toast.LENGTH_SHORT).show();
etName.setText(“”);
etAge.setText(“”);
}else{
Toast.makeText(this, “删除失败”, Toast.LENGTH_SHORT).show();
}
“`
5.查询学生信息
在查询学生信息时,我们需要通过EditText控件获取学生的姓名和年龄,并从数据表中查询符合条件的学生信息,并在ListView中展示查询结果。具体实现代码如下:
首先我们需要通过输入框获取查询条件:
“`
String name = etName.getText().toString().trim();
int age = Integer.parseInt(etAge.getText().toString().trim());
“`
然后通过SQL语句查询符合条件的学生信息:
“`
//获取可读的数据库对象
db = dbHelper.getReadableDatabase();
//查询数据
Cursor cursor = db.rawQuery(“select _id, name, age from student where name=? and age=?”, new String[]{name, String.valueOf(age)});
if(cursor.getCount() > 0){
//适配器
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_expandable_list_item_2,
cursor,
new String[]{“name”, “age”},
new int[]{android.R.id.text1, android.R.id.text2},
SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER
);
lvStudents.setAdapter(adapter);
}else{
Toast.makeText(this, “没有符合条件的学生信息”, Toast.LENGTH_SHORT).show();
}
“`
四、
通过本文的学习,相信大家已经初步掌握了Android数据库操作的基本知识和操作流程。同时,我们也了解到了一个简单的学生信息管理应用的实现过程。
对于初学者而言,学习Android数据库操作,还需要不断地实践和不断提高自己的能力和技巧。希望大家能够通过不断地学习和实践,成为一名优秀的Android开发者。