android 数据库dao
  OTv2suKwXC7a 2023年11月02日 40 0

Android数据库DAO

1. 简介

在Android应用程序开发中,数据库是一个非常重要的组件。数据库DAO(Data Access Object)是一种设计模式,用于封装对数据库的访问操作。它提供了一种简单的方式来管理数据的创建、更新、读取和删除。

2. 数据库的创建

在使用数据库DAO之前,我们首先需要创建一个数据库。下面是一个示例代码,展示了如何创建一个名为"students.db"的数据库,并创建一个名为"students"的表格。

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "students.db";
    private static final int DATABASE_VERSION = 1;

    private static final String TABLE_STUDENTS = "students";
    private static final String COLUMN_ID = "_id";
    private static final String COLUMN_NAME = "name";
    private static final String COLUMN_AGE = "age";

    private static final String CREATE_TABLE_STUDENTS = "CREATE TABLE " +
            TABLE_STUDENTS + "(" +
            COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            COLUMN_NAME + " TEXT, " +
            COLUMN_AGE + " INTEGER" +
            ")";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_STUDENTS);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_STUDENTS);
        onCreate(db);
    }
}

3. DAO的实现

接下来,我们需要实现一个DAO类来管理数据库中表格的操作。下面是一个示例代码,展示了如何实现一个名为"StudentDAO"的DAO类。

public class StudentDAO {
    private SQLiteDatabase database;
    private DatabaseHelper dbHelper;

    public StudentDAO(Context context) {
        dbHelper = new DatabaseHelper(context);
    }

    public void open() throws SQLException {
        database = dbHelper.getWritableDatabase();
    }

    public void close() {
        dbHelper.close();
    }

    public void insert(Student student) {
        ContentValues values = new ContentValues();
        values.put(DatabaseHelper.COLUMN_NAME, student.getName());
        values.put(DatabaseHelper.COLUMN_AGE, student.getAge());
        database.insert(DatabaseHelper.TABLE_STUDENTS, null, values);
    }

    public void update(Student student) {
        ContentValues values = new ContentValues();
        values.put(DatabaseHelper.COLUMN_NAME, student.getName());
        values.put(DatabaseHelper.COLUMN_AGE, student.getAge());
        database.update(DatabaseHelper.TABLE_STUDENTS, values, DatabaseHelper.COLUMN_ID + " = " + student.getId(), null);
    }

    public void delete(Student student) {
        database.delete(DatabaseHelper.TABLE_STUDENTS, DatabaseHelper.COLUMN_ID + " = " + student.getId(), null);
    }

    public List<Student> getAllStudents() {
        List<Student> students = new ArrayList<>();

        Cursor cursor = database.query(DatabaseHelper.TABLE_STUDENTS, null, null, null, null, null, null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            Student student = new Student();
            student.setId(cursor.getInt(cursor.getColumnIndex(DatabaseHelper.COLUMN_ID)));
            student.setName(cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_NAME)));
            student.setAge(cursor.getInt(cursor.getColumnIndex(DatabaseHelper.COLUMN_AGE)));
            students.add(student);
            cursor.moveToNext();
        }
        cursor.close();

        return students;
    }
}

4. 使用DAO进行数据库操作

现在我们可以使用StudentDAO类来执行数据库操作了。下面是一个示例代码,展示了如何使用StudentDAO类来插入、更新、删除和查询学生数据。

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);
        studentDAO.open();

        // 插入学生数据
        Student student1 = new Student("John", 20);
        Student student2 = new Student("Alice", 22);
        studentDAO.insert(student1);
        studentDAO.insert(student2);

        // 更新学生数据
        student2.setAge(23);
        studentDAO.update(student2);

        // 删除学生数据
        studentDAO.delete(student1);

        // 查询所有学生数据
        List<Student> students = studentDAO.getAllStudents();
        for (Student student : students) {
            Log.d("Student", "ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge());
        }

        studentDAO.close();
    }
}

上述代码示例中,我们首先创建了一个StudentDAO对象,并调用open()方法打开数据库连接。然后,我们插入了两个学生数据,并对其中一个学生进行了更新操作。接着,我们

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
OTv2suKwXC7a