SQLite数据库的DAO模式的CRUD操作

Android Studio在DAO模式下的SQLite数据库的CRUD编程

要求:
AS实现往SQLite数据库中表的增删改查。
实现界面展示:
布局文件:

主布局,需要2个TextView:分别表示姓名和年龄;2个EditText:id分别为et_name,et_age;3个Button按钮:id分别为bt_add,bt_modify,bt_del和1个ListView:id为listView。
ListView使用的布局:id为别为的tv_id、tvname和tvage的3个TextView控件。

事件监听控制:

(1)新建名为DbHelper的SQLite数据库打开助手类,主要重写两个抽象方法onCreate()方法建表friends。之后运行时,若数据库没有版本提升,则以可读写方式直接打开数据库;SQLite数据库属于内部存储,在应用卸载时将被删除,而再次安装时不会被删除;若有版本提升,则先执行onUpgrade()方法后,再以可读写方式打开数据库。
部分代码:

    @Override
    public void onCreate(SQLiteDatabase db) {
        //当表不存在时,创建表;第一字段为自增长类型
        db.execSQL("CREATE TABLE IF NOT EXISTS " +
                TB_NAME + "( _id integer primary key autoincrement," +
                "name varchar," + "age integer"+ ")");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 执行SQL命令
        db.execSQL("DROP TABLE IF EXISTS " + TB_NAME);
        onCreate(db);
    }

(2)新建名为MyDAO的数据库访问类,在MyDAO中调用DbHelper类,同时利用MyDAO提供的CRUD针对数据库test.db的表friends完成增删改查操作。
部分代码:

    public Cursor allQuery(){    //查询所有记录
        myDb = dbHelper.getReadableDatabase();
        return myDb.rawQuery("select * from friends",null);
    }
    public  int getRecordsNumber(){  //返回数据表记录数
        myDb = dbHelper.getReadableDatabase();
        Cursor cursor= myDb.rawQuery("select * from friends",null);
        return cursor.getCount();
    }

    public void insertInfo(String name,int age){  //插入记录
        myDb = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        long rowid=myDb.insert(DbHelper.TB_NAME, null, values);
        if(rowid==-1)
            Log.i("myDbDemo", "数据插入失败!");
        else
            Log.i("myDbDemo", "数据插入成功!"+rowid);
    }
    public void deleteInfo(String selId){  //删除记录
            String where = "_id=" + selId;
            int i = myDb.delete(DbHelper.TB_NAME, where, null);
            if (i > 0)
                Log.i("myDbDemo", "数据删除成功!");
            else
                Log.i("myDbDemo", "数据未删除!");
    }
    public void updateInfo(String name,int age,String selId){  //修改记录
       //方法中的第三参数用于修改选定的记录
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        String where="_id="+selId;
        int i=myDb.update(DbHelper.TB_NAME, values, where, null);

        //上面几行代码的功能可以用下面的一行代码实现
        //myDb.execSQL("update friends set name = ? ,age = ? where _id = ?",new Object[]{name,age,selId});

        if(i>0)
            Log.i("myDbDemo","数据更新成功!");
        else
            Log.i("myDbDemo","数据未更新!");
    }

在MainActivity中监听各个点击事件,完成获取数据,并使用MyDAO类中方法。代码见码云仓库。

最后附上源码(码云仓库):
链接: https://gitee.com/yangjy11/SQLite-AS/tree/master/MySQLite/app/src/main.

猜你喜欢

转载自blog.csdn.net/qq_44841678/article/details/105919952