• 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总结

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

  • 相关阅读:
    HDU 5247
    HDU 4965
    CodeForces 445B
    HDU 5835
    CodeForces 731C
    HDU 5783
    CodeForces 660D
    POJ 1631
    HDU 6112
    HDU 5860
  • 原文地址:https://www.cnblogs.com/supertonny/p/4423749.html
Copyright © 2020-2023  润新知