我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android 通过SQLite数据库实现数据存储管理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android 通过SQLite数据库实现数据存储管理

0 实验环境

在Android Studio中进行有关代码的编写和界面效果展示。

SQLite数据库的图形化工具SQLiteStudio
下载网址:SQLiteStudio官网

在这里插入图片描述

1 界面展示

在这里插入图片描述
在这里插入图片描述

2 功能说明

(1)需实现一个应用可供用户进行数据的录入存储
(2)能实现基础CRUD操作,对数据进行的删、查、改等操作
(3)同时要有输入栏和结果的展示。

3 设计原理

SQLiteOpenHelper 是Android 提供的一个抽象工具类,负责管理数据库的创建、升级工作。如果我们想创建数据库,就需要自定义一个类继承SQLiteOpenHelper,然后覆写其中的抽象方法。
其中DbHelper类继承了SQLiteOpenHelper 类。在onCreate()方法中通过执行sql 语句实现表的创建。MyDAO类定义操作数据库的增删改查方法,insert(),delete(),update(),select()

4 核心代码

4.1 UI设计

在这里插入图片描述

activity_main.xml对主界面进行设计,需要有输入栏、操作按钮、结果显示,其中结果显示使用listView组件进行展示。
部分代码:


<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:addStatesFromChildren="true" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名"
            android:fontFamily="@font/huawencaiyun"
            android:textColor="@color/blue"
            android:textSize="25sp"/>
        <EditText
            android:id="@+id/et_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:singleLine="true" />
</LinearLayout>

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:addStatesFromChildren="true"
        android:gravity="center" >
        <Button
            android:id="@+id/bt_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="添加" />
    </LinearLayout>

    <ListView
        android:gravity="center"
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dip" >
    </ListView>

在这里插入图片描述

对上述listView组件的item元素设计:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <TextView
        android:id="@+id/tv_id"
        android:textSize="25sp"
        android:layout_width="50dp"
        android:layout_height="wrap_content"/>
</LinearLayout>

4.2 编写有关Java类

在这里插入图片描述

(1)MainActivity类,用于初始化一些变量和注册组件:

在这里插入图片描述

核心代码:(这里只展示 onCreate和displayRecords两个方法)


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myDAO = new MyDAO(this);  //创建数据库访问对象
    if(myDAO.getRecordsNumber()==0) {  //防止重复运行时重复插入记录
        myDAO.insertInfo("王家伟", 20);   //插入记录
        myDAO.insertInfo("结衣", 19); //插入记录
    }
    initView();
    initEvent();
    displayRecords();   //显示记录
}

public void displayRecords(){  //显示记录方法定义
    listView = (ListView)findViewById(R.id.listView);
    listData = new ArrayList<Map<String,Object>>();
    Cursor cursor = myDAO.allQuery();
    while (cursor.moveToNext()){
        int id=cursor.getInt(0);  //获取字段值
        String name=cursor.getString(1);
        //int age=cursor.getInt(2);
        @SuppressLint("Range") int age=cursor.getInt(cursor.getColumnIndex("age"));//推荐此种方式
        listItem=new HashMap<String,Object>(); //必须在循环体里新建
        listItem.put("_id", id);  //第1参数为键名,第2参数为键值
        listItem.put("name", name);
        listItem.put("age", age);
        listData.add(listItem);   //添加一条记录
    }
    listAdapter = new SimpleAdapter(this,
            listData,
            R.layout.list_item, //自行创建的列表项布局
            new String[]{"_id","name","age"},
            new int[]{R.id.tv_id,R.id.tv_name,R.id.tv_age});
    listView.setAdapter(listAdapter);  //应用适配器
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  //列表项监听
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Map<String,Object> rec= (Map<String, Object>) listAdapter.getItem(position);  //从适配器取记录
            et_name.setText(rec.get("name").toString());  //刷新文本框
            et_age.setText(rec.get("age").toString());
            Log.i("ly",rec.get("_id").toString());
            selId=rec.get("_id").toString();  //供修改和删除时使用
        }
    });
}

(2)DbHelper类是SQLite数据库打开助手类,用来创建和打开数据库,并创建数据表:

核心代码:


public class DbHelper extends SQLiteOpenHelper {
    public static final String TB_NAME = "friends";  //表名

    //构造方法:第1参数为上下文,第2参数库库名,第3参数为游标工厂,第4参数为版本
    public DbHelper(Context context, String dbname, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, dbname, factory, version);  //创建或打开数据库
    }

    @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);
    }
}

(3)MyDAO类中对数据库的进行增删查改操作进行了定义,使得可以在主程序文件中直接调用有关API接口:

在这里插入图片描述

核心代码:


//构造方法,参数为上下文对象
public MyDAO(Context context) {
    //第1参数为上下文,第2参数为数据库名
    dbHelper = new DbHelper(context, "test.db", null, 1);
}

//查询所有记录
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", "数据未更新!");
}

(4)使用SQLite数据库的图形化工具SQLiteStudio,来查看在应用中创建的数据文件里的表数据:

注意:创建的数据库位于:/data/data/包名/databases/目录中

在这里插入图片描述

最后使用SQLite数据库的图形化工具SQLiteStudio,将保存的db文件导入SQLiteStudio中,来查看在应用中创建的数据文件里的表数据
数据表的结构:

在这里插入图片描述
数据表的数据:
在这里插入图片描述

5 代码仓库

具体代码已上传至gitee代码仓库

6 总结

学习了如何创建SQLite数据库和基础CRUD操作,最后用图形化工具SQLiteStudio查看生成的数据库中的数据表!

到此这篇关于Android 通过SQLite数据库实现数据存储管理的文章就介绍到这了,更多相关SQLite数据库实现数据存储管理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android 通过SQLite数据库实现数据存储管理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android如何通过SQLite数据库实现数据存储管理

这篇文章主要介绍了Android如何通过SQLite数据库实现数据存储管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。0 实验环境在Android Studio中进行有关代
2023-06-25

Android SQLite数据库存储

前言:Android为了让我们更加方便的管理数据库,专门提供了SQLiteOpenHelper帮助类,借助这个类可以简单的对数据库进行创建和升级。 下面介绍一下SQLiteOpenHelper:(扩展知识) SQLiteOpenHelper
2022-06-06

Android SQLite数据库彻底掌握数据存储

SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义
2022-06-06

详解Android数据存储—使用SQLite数据库

SQLite是Android自带的关系型数据库,是一个基于文件的轻量级数据库。Android提供了3种操作数据的方式,SharedPreference(共享首选项)、文件存储以及SQLite数据库。 SQLite数据库文件被保存在/data
2022-06-06

Android数据的四种存储方式之SQLite数据库

Test.java: /*** 本例解决的问题:* 核心问题:通过SQLiteOpenHelper类创建数据库对象* 通过数据库对象对数据库的数据的操作* 1.sql语句方式操作SQLite数据库* 2.谷歌提供的api对SQLite数据库
2022-06-06

android studio数据存储建立SQLite数据库怎么实现增删查改

今天就跟大家聊聊有关android studio数据存储建立SQLite数据库怎么实现增删查改,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实验目的:分别使用sqlite3工具和An
2023-06-22

Android学习笔记(十二)——数据存储(SQLite数据库)

【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中Che
2022-06-06

Qt使用SQLite数据库存储管理图片文件

这篇文章主要为大家详细介绍了Qt如何使用SQLite数据库实现存储管理图片文件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2023-05-16

Android持久化存储(3)SQLite数据库的使用

1.什么是SQlite SQLite是由C语言编写的一款轻型数据库,因占用资源小,处理速度快,功能齐全,特别适用于移动设备,最重要的是开源,任何人都可以使用它,许多开源项目(PHP,Python)和当今两大手机操作系统Android和iOS
2022-06-06

Qt怎么使用SQLite数据库存储管理图片文件

今天小编给大家分享一下Qt怎么使用SQLite数据库存储管理图片文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、效果演
2023-07-06

MySQL存储过程:高效管理数据库操作

MySQL存储过程:高效管理数据库操作MySQL存储过程是一种预先编译并存储在数据库服务器中的一段SQL语句集,可以被多次调用执行,方便管理和提高数据库操作效率。通过存储过程,可以减少网络传输量,减少SQL解析和编译时间,提高数据处理效率
MySQL存储过程:高效管理数据库操作
2024-03-14

Android开发连接sqlite并通过SQLiteStudio实时读取数据库

最近进行毕业设计的时候,用到了android开发连接数据库这一块, 之前每次都是这么使用它的 先访问安卓项目的数据库路径data/data/项目/databases 然后把对应的db文件拷出来 再在SQLiteStudio中去使用 每次查询
2022-06-06

android通过jxl读excel存入sqlite3数据库

代码如下:package com.demo.day20140228; import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import j
2022-06-06

Android中怎么实现数据存储

在Android应用中,可以使用以下几种方式来实现数据存储:SharedPreferences:SharedPreferences是Android提供的用于存储简单键值对数据的API。它可以用来存储一些简单的配置信息或用户偏好设置。文件存储
Android中怎么实现数据存储
2024-04-03

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录