安卓 数据库

学习笔记

一、创建 DabaseHelper 继承 SQLiteOpenHelper

public class DatabaseHelper extends SQLiteOpenHelper {


    public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

二、写入数据库名称,表名,列名

public class DatabaseHelper extends SQLiteOpenHelper {

    // 数据库名称
    private static final String DATABASE_NAME = "mydatapase.dp";
    // 数据库版本
    private static final int DATABASE_VERSION = 1;

    // 表名和列名常量
    private static final String TABLE_NAME = "fodd"; // 食物表的名称
    private static final String COLUMN_SCHEDULE_ID = "id"; // ID列
    private static final String COLUMN_SCHEDULE_FOODNAME = "foodName"; // 食物名称列
    private static final String COLUMN_SCHEDULE_FOODDESCRIBES = "foodDescribes"; // 食物描述列

    // 创建数据库时调用,创建表结构
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表的SQL语句
        String CREATE_SCHEDUL_TABEL = "CREATE TABLE " + TABLE_NAME + " ("
                + COLUMN_SCHEDULE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + COLUMN_SCHEDULE_FOODNAME + " TEXT, "
                + COLUMN_SCHEDULE_FOODDESCRIBES + " TEXT"
                + ")";
        // 执行创建表的SQL语句
        db.execSQL(CREATE_SCHEDUL_TABEL);
    }

    // 数据库版本更新时调用,处理表的升级
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 如果表存在,则删除旧表
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        // 重新创建新表
        onCreate(db);
    }
}

三、插入数据方法

// 插入数据到数据库表
    public void insertFoodList(String foodname, String fooddescribes) {
        // 获取可写数据库
        SQLiteDatabase db = this.getWritableDatabase();
        // 创建ContentValues对象用于存储要插入的值
        ContentValues values = new ContentValues();
        values.put(COLUMN_SCHEDULE_FOODNAME, foodname); // 存储食物名称
        values.put(COLUMN_SCHEDULE_FOODDESCRIBES, fooddescribes); // 存储食物描述
        // 插入数据到表中
        db.insert(TABLE_NAME, null, values);
        // 关闭数据库连接
        db.close();
    }

 四、查询数据方法

public List<FoodItem> getAllFoods() {
    // 创建一个空的食物列表,用于存储查询结果
    List<FoodItem> foodList = new ArrayList<>();
    
    // 获取可读数据库
    SQLiteDatabase db = this.getReadableDatabase();
    
    // 执行查询,获取表中所有记录
    Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);

    // 检查游标是否指向结果集的第一条记录
    if (cursor.moveToFirst()) {
        // 遍历结果集
        do {
            // 获取食物名称和描述
            String foodName = cursor.getString(cursor.getColumnIndex(COLUMN_SCHEDULE_FOODNAME));
            String foodDescribes = cursor.getString(cursor.getColumnIndex(COLUMN_SCHEDULE_FOODDESCRIBES));
            
            // 创建 FoodItem 对象并添加到列表中
            foodList.add(new FoodItem(foodName, foodDescribes));
        } while (cursor.moveToNext()); // 移动到下一条记录
    }

    // 关闭游标,释放资源
    cursor.close();
    
    // 关闭数据库连接
    db.close();
    
    // 返回包含所有食物的列表
    return foodList;
}

 五、更新数据方法

public void updateFood(int id, String newFoodName, String newFoodDescribes) {
    // 获取可写数据库实例
    SQLiteDatabase db = this.getWritableDatabase();
    
    // 创建ContentValues对象,用于存储要更新的值
    ContentValues values = new ContentValues();
    values.put(COLUMN_SCHEDULE_FOODNAME, newFoodName); // 存储新的食物名称
    values.put(COLUMN_SCHEDULE_FOODDESCRIBES, newFoodDescribes); // 存储新的食物描述

    // 执行更新操作
    db.update(TABLE_NAME, values, COLUMN_SCHEDULE_ID + " = ?", new String[]{String.valueOf(id)});
    
    // 关闭数据库连接
    db.close();
}

 六、删除数据方法

// 根据ID删除数据
    public void deleteFoodList(int id) {
        // 获取可写数据库
        SQLiteDatabase db = this.getWritableDatabase();
        // 根据ID删除对应的行
        db.delete(TABLE_NAME, COLUMN_SCHEDULE_ID + "=?", new String[]{String.valueOf(id)});
        // 关闭数据库连接
        db.close();
    }

 七、查数据是否存在方法

public boolean isFoodExists(String foodName) {
    // 获取可读数据库实例
    SQLiteDatabase db = this.getReadableDatabase();
    
    // 执行查询,检查指定名称的食物是否存在
    Cursor cursor = db.query(
        TABLE_NAME,                            // 表名
        new String[]{COLUMN_SCHEDULE_FOODNAME}, // 要查询的列
        COLUMN_SCHEDULE_FOODNAME + "=?",      // 查询条件
        new String[]{foodName},                // 查询条件的参数
        null, null, null                       // 其他参数(分组、过滤、排序等)
    );

    // 检查结果集的行数,如果大于0则表示存在
    boolean exists = (cursor.getCount() > 0);
    
    // 关闭游标和数据库连接,以释放资源
    cursor.close();
    db.close();
    
    // 返回食物是否存在的结果
    return exists;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值