安卓基础学习 Day 10|连接SQLite数据库

目录

一、提出要求

二、实现可看到联系人,切列表可滑动

1.编写主布局资源文件

2.创建自定义数据库助手类–DBHelper

3.主界面类

一、提出要求

·完成应用联系人(使用SQLite数据库)

1.启动程序可以看到联系人(数据库中储存),联系人过多可以滑动列表

2.点击联系人弹出吐司可以查看联系人详细信息

3.长按联系人出现上下文菜单,处理菜单事件。

二、实现可看到联系人,切列表可滑动

1.编写主布局资源文件

·实现列表且可以滑动

·示例代码


·实现效果

·这里的列表是可以滑动的

安卓基础学习 Day 10|连接SQLite数据库

2.创建自定义数据库助手类–DBHelper

安卓基础学习 Day 10|连接SQLite数据库

·作用是创建数据库实现数据库的增删改查

安卓基础学习 Day 10|连接SQLite数据库

安卓基础学习 Day 10|连接SQLite数据库

·构造方法创建数据库

安卓基础学习 Day 10|连接SQLite数据库

·在onCreate方法中创建数据表,并添加表记录

安卓基础学习 Day 10|连接SQLite数据库

安卓基础学习 Day 10|连接SQLite数据库

升级数据库

安卓基础学习 Day 10|连接SQLite数据库

query方法:提供表记录查询服务,返回游标对象

安卓基础学习 Day 10|连接SQLite数据库

安卓基础学习 Day 10|连接SQLite数据库

安卓基础学习 Day 10|连接SQLite数据库

插入

安卓基础学习 Day 10|连接SQLite数据库

DBHelper中全部代码

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class DBHelper extends SQLiteOpenHelper {
    private Context context;//上下文环境
    private static final String DB_NAME = "contact.db";//数据库名
    private static final int DB_VERSION = 1;//数据库版本号
    private static final String TABLE_NAME = "contact";//表名

    //构造方法  创建数据库
    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    //创建回调方法,只有当数据库不存在时才被调用
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建数据表
        createTable(db, TABLE_NAME);
        //添加表记录
        addRecords(db, TABLE_NAME);
    }

    //创建数据表
    public void createTable(SQLiteDatabase db, String tableName) {
        String strSQL = "create table " + tableName + "(_id text,name text,gender text,age integer,tel text)";
        try {
            //执行SQL,创建数据表
            db.execSQL(strSQL);
        } catch (SQLException e) {
            Toast.makeText(context, "很遗憾,建表失败!", Toast.LENGTH_SHORT).show();
        }
    }

    //添加表记录
    public void addRecords(SQLiteDatabase db, String tableName) {
        //创建内容值对象
        ContentValues values = new ContentValues();

        //将第一条记录信息放入内容值对象
        values.put("_id", "21265023");
        values.put("name", "鲁正婷");
        values.put("gender", "女");
        values.put("age", 19);
        values.put("tel", "15284850924");
        // 利用数据库对象的插入方法,插入第6条记录
        db.insert(tableName, null, values);

        //将第二条记录信息放入内容值对象
        values.put("_id", "21265017");
        values.put("name", "周帅");
        values.put("gender", "男");
        values.put("age", 18);
        values.put("tel", "18384022951");
        // 利用数据库对象的插入方法,插入第6条记录
        db.insert(tableName, null, values);

        //将第三条记录信息放入内容值对象
        values.put("_id", "21265018");
        values.put("name", "黄亮");
        values.put("gender", "男");
        values.put("age", 19);
        values.put("tel", "13183450598");
        // 利用数据库对象的插入方法,插入第6条记录
        db.insert(tableName, null, values);

        //将第四条记录信息放入内容值对象
        values.put("_id", "21265011");
        values.put("name", "蔡喜");
        values.put("gender", "男");
        values.put("age", 20);
        values.put("tel", "18942889621");
        // 利用数据库对象的插入方法,插入第6条记录
        db.insert(tableName, null, values);

        //将第五条记录信息放入内容值对象
        values.put("_id", "21265012");
        values.put("name", "杨艺");
        values.put("gender", "女");
        values.put("age", 19);
        values.put("tel", "19136410459");
        // 利用数据库对象的插入方法,插入第6条记录
        db.insert(tableName, null, values);

        // 将第6条记录信息放入内容值对象
        values.put("_id", "2020006");
        values.put("name", "伍子胥");
        values.put("gender", "男");
        values.put("age", 20);
        values.put("tel", "15878786780");
        // 利用数据库对象的插入方法,插入第6条记录
        db.insert(tableName, null, values);

        // 将第7条记录信息放入内容值对象
        values.put("_id", "2020007");
        values.put("name", "南怀瑾");
        values.put("gender", "男");
        values.put("age", 18);
        values.put("tel", "13956567862");
        // 利用数据库对象的插入方法,插入第7条记录
        db.insert(tableName, null, values);

        // 将第8条记录信息放入内容值对象
        values.put("_id", "2020008");
        values.put("name", "李文华");
        values.put("gender", "女");
        values.put("age", 18);
        values.put("tel", "15956567845");
        // 利用数据库对象的插入方法,插入第8条记录
        db.insert(tableName, null, values);

        // 将第9条记录信息放入内容值对象
        values.put("_id", "2020009");
        values.put("name", "吴文渊");
        values.put("gender", "男");
        values.put("age", 20);
        values.put("tel", "13978784560");
        // 利用数据库对象的插入方法,插入第8条记录
        db.insert(tableName, null, values);

        // 将第10条记录信息放入内容值对象
        values.put("_id", "2020010");
        values.put("name", "陈燕文");
        values.put("gender", "女");
        values.put("age", 18);
        values.put("tel", "15890903456");
        // 利用数据库对象的插入方法,插入第10条记录
        db.insert(tableName, null, values);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //暂不升级
    }

    //查询方法
    public Cursor query(String tableName, String[] columns, String selection, String[] selectionArgs) {
        //获取只读数据库
        SQLiteDatabase db = getReadableDatabase();
        //执行的数据库查询方法,返回游标对象
        return db.query(tableName, columns, selection, selectionArgs, null, null, null, null);
    }

    //删除方法
    public int delete(String tableName, String whereClause, String[] whereArgs) {
        //获取可写数据库
        SQLiteDatabase db = getWritableDatabase();
        //执行数据库删除方法,返回删除记录数
        return db.delete(tableName, whereClause, whereArgs);
    }

    //更新方法
    public int update(String tableName, ContentValues values, String whereClause, String[] whereArgs) {
        //获取可写数据库
        SQLiteDatabase db = getWritableDatabase();
        //执行数据库更新方法,返回更新记录数
        return db.update(tableName, values, whereClause, whereArgs);
    }

    //插入方法
    public long insert(String tableName, ContentValues values) {
        //获取可写数据库
        SQLiteDatabase db = getWritableDatabase();
        //执行数据库插入方法,返回插入记录数
        return db.insert(tableName, null, values);
    }
}

3.主界面类

·声明变量和常亮

安卓基础学习 Day 10|连接SQLite数据库

·获取控件实例

安卓基础学习 Day 10|连接SQLite数据库

·实例化数据库助手

安卓基础学习 Day 10|连接SQLite数据库

· 查询全部联系人,返回游标,作为数据源

安卓基础学习 Day 10|连接SQLite数据库

关于游标:游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。

·创建简单的游标适配器

安卓基础学习 Day 10|连接SQLite数据库

·给列表控件设置适配器

安卓基础学习 Day 10|连接SQLite数据库

·给列表控件注册监听器

安卓基础学习 Day 10|连接SQLite数据库

在这里已经可以查看效果了

·这里已经完成了单击弹出吐司显示全部联系人信息

安卓基础学习 Day 10|连接SQLite数据库

Original: https://blog.csdn.net/m0_64018773/article/details/125393556
Author: 小鲁不吃猪蹄
Title: 安卓基础学习 Day 10|连接SQLite数据库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815569/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球