SQLite是一个轻量级的关系型数据库管理系统,被广泛应用于移动应用开发中,特别是在Android平台。SQLite数据库允许开发者直接在设备上存储和访问数据,无需网络连接。
在Android中使用SQLite数据库时,通常需要创建一个自定义的类来继承SQLiteOpenHelper,以便于管理和操作数据库。以下是一个简单的示例,展示了如何创建一个数据库以及相关的增删改查操作。
首先,我们需要创建一个自定义的帮助类,该类将负责数据库的创建和升级:
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "students.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE_STUDENTS = "CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT,
gender TEXT,
age INTEGER)";
db.execSQL(CREATE_TABLE_STUDENTS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS students");
// Create tables again
onCreate(db);
}
}
```
在这个例子中,我们定义了一个名为`DatabaseHelper`的类,它继承自`SQLiteOpenHelper`。构造函数中指定了数据库的名称(students.db)和版本号。`onCreate`方法用于首次创建数据库时执行,而`onUpgrade`方法则用于当数据库版本发生变化时执行,通常是删除旧表并重新创建。
接下来,我们可以定义一个`Student`类来表示学生实体,以及一个`StudentDAO`类来封装所有与学生数据相关的操作:
```java
public class Student {
private int id;
private String name;
private String gender;
private int age;
// 构造器、getter和setter省略
}
```
```java
public class StudentDAO {
private DatabaseHelper dbHelper;
public StudentDAO(Context context) {
dbHelper = new DatabaseHelper(context);
}
public long insertStudent(Student student) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", student.getName());
values.put("gender", student.getGender());
values.put("age", student.getAge());
return db.insert("students", null, values);
}
public int deleteStudent(long id) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
return db.delete("students", "id=?", new String[]{String.valueOf(id)});
}
public int updateStudent(Student student) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", student.getName());
values.put("gender", student.getGender());
values.put("age", student.getAge());
return db.update("students", values, "id=?", new String[]{String.valueOf(student.getId())});
}
public List
List
String selectQuery = "SELECT * FROM students";
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Student student = new Student();
student.setId(cursor.getInt(0));
student.setName(cursor.getString(1));
student.setGender(cursor.getString(2));
student.setAge(cursor.getInt(3));
studentList.add(student);
} while (cursor.moveToNext());
}
cursor.close();
return studentList;
}
}
```
以上代码中,`StudentDAO`类提供了插入、删除、更新和查询学生记录的方法。每个方法都使用了`SQLiteDatabase`对象来执行相应的SQL语句。
最后,在主活动中,我们可以实例化`StudentDAO`对象,并调用其提供的方法来操作数据库:
```java
public class MainActivity extends AppCompatActivity {
private StudentDAO studentDAO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
studentDAO = new StudentDAO(this);
// 示例:添加一条学生记录
Student student = new Student();
student.setName("张三");
student.setGender("男");
student.setAge(20);
studentDAO.insertStudent(student);
}
// 其他按钮点击事件可以类似地处理
}
```
通过上述步骤,我们可以在Android应用中有效地使用SQLite数据库来存储和管理数据。希望本文能够帮助您更好地理解和应用SQLite数据库技术。