Android学习四:数据库操作

1前言

android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包。SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库。

2代码

简单的数据库类封装

package org.tonny.utils;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context) {
        /**
         * students.db 数据库的名字 ;null 表示使用默认的游标工厂 ;1 表示一开始的版本,建议设置为1
         */
        super(context, "sutdents.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 该方法在第一次创建数据库的时候被调用
        // 因此可以在这个地方创建表之类的操作
        db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 修改数据库的版本会触发此函数
        // 在这里可以添加新的表或者修改表的字段
    }
}

 

模型对象

package org.tonny.utils;

public class Student {
    private int id;
    private String name;

    public Student() {

    }

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

控制逻辑

package org.tonny.utils;


import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class StudentService {

    private DBHelper dbHelper = null;

    public StudentService(Context context) {
        this.dbHelper = new DBHelper(context);
    }

    public void insert(Student stu) {
        // 内部有緩存功能,使用的是同一個句柄,如果数据库满了,则返回一个只读的句柄
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 使用占位符號‘?’,防止特殊字符
        db.execSQL("INSERT INTO student VALUES(?,?)",
                new Object[] { stu.getId(), stu.getName() });
    }

    public void delete(Integer id) {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        db.execSQL("DELETE FROM student WHERE id = ?",
                new String[] { String.valueOf(id) });
    }

    public void update(Student stu) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        db.execSQL("UPDATE student SET name = ? WHERE id = ?", new String[] {
                stu.getName(), String.valueOf(stu.getId()) });
    }

    public Student query(Integer id) {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        String sql = "SELECT * FROM student WHERE id = ?";
        Cursor cursor = db.rawQuery(sql, new String[] { String.valueOf(id) });
        if (cursor.moveToFirst()) {
            int stuId = cursor.getInt(cursor.getColumnIndex("id"));
            String stuName = cursor.getString(cursor.getColumnIndex("name"));
            return new Student(stuId, stuName);
        }
        return null;
    }
}

 

3总结

数据库的操作都差不多,就这些吧,还有的其他功能等我回头再完善吧。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。