Android数据存储的五种方式3

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Android数据存储的五种方式

Android数据存储的五种方式2:https://developer.aliyun.com/article/1473560

使用MySQLiteOpenHelper进行增删改查

// 创建数据库(数据库名称为myDataDb)
MySQLiteOpenHelper mySQLiteOpenHelper = new MySQLiteOpenHelper(getApplicationContext(), "myDataDb");
SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase();

// 增(SQLite的添加语句:INSERT INTO user (name, passwords)] VALUES ("张三", "123456"))
ContentValues value = new ContentValues();//用于存储数据
value.put("name", "阿超");//向数据表中字段名为name的字段中添加"阿超"
value.put("password", "123456");//向数据表中字段名为passwords的字段中添加"123456"
// db数据库对象在前面已经创建,这里直接使用
db.insert("user",null, value);//在数据库的user数据表中添加字段名name为"阿超",字段名passwords为"123456"的数据

// 删(SQLite的删除语句:DELETE FROM user WHERE name = "张三")
db.delete("user", "name=?", new String[]{"张三"});//第一个参数表名,第二个参数条件,第三个参数为对应的删除条件

// 改(SQLite的修改语句:UPDATE user SET passwords= "666" WHERE name="张三")
ContentValues values = new ContentValues();
values.put("password", "666");
db.update("user", values, "name=?", new String[]{"张三"});(把名字为张三的密码修改为666)

// 查(SQLite的查询语句:SELECT * FROM user)
String sql = "select * from user";
Cursor cursor = db.rawQuery(sql, null);
cursor.moveToFirst();//转移到结果的第一行
while(!cursor.isAfterLast()){
  String name = cursor.getString(cursor.getColumnIndex("name"));
  String passwords = cursor.getString(cursor.getColumnIndex("password"));
  LogUtil.i("data", "name=" + name + "   password=" + passwords);
  cursor.moveToNext();
}

使用ContentProvider存储数据

介绍: 内容提供器,主要用于在不同应用程序之间实现数据的共享,从而能够让其他的应用保存或读取此Content Provider的各种数据类型


ContentProvider使用方法有两种


使用现有的内容提供器来读取和操作相应程序中的数据

创建自己的内容提供器给我们的应用提供外部访问接口

使用ContentResolver读取数据

在ContentResolver中是通过Uri指定操作的内容“位置”

Uri由两部分组成:权限和路径


权限是对于不同的应用程序进行区分的,一般用应用程序的包名;

路径是对于同一应用程序的不同表进行区分的。

例如,我们有一个应用程序的包名是“top.gaojc.demo”,应用程序中有一个表是table,则Uri为:content://top.gaojc.demo/table

(Uri uri = Uri.parse.(“content://top.gaojc.demo/table”);)


pu<!--允许读取通讯录 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>


Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
ContentResolver mContentResolver= getContentResolver();

/**
* 增删改的方式和SQLite存储方式类似,这里不再进行过多阐述
*/

// 查(查询通讯录为例,查询通讯录需要添加上方权限)
Cursor cursor = mContentResolver.query(uri,new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
  String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
  String num = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
  LogUtil.i("data", "联系人姓名:" + name + ", 电话:" + num);
  cursor.moveToNext();
}

网络存储数据

介绍: 通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储在网络空间中的数据信息

get请求

public static String loginByGet(String username, String password) {
        String path = http://192.168.0.1:8080/Demo/Login?username= + username + &password= + password;
        try {
            URL url = new URL(path);//将访问的路径转换为url
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();//通过URL获取连接
            conn.setConnectTimeout(5000);//设置连接超时时间
            conn.setRequestMethod(GET);//设置请求方式
            int code = conn.getResponseCode();//返回的状态值
            if (code == 200) {
                InputStream is = conn.getInputStream();
                return StreamTools.streamToString(is);//字节流转换为字符串
            } else {
                return "网络访问失败";
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "网络访问失败";
        }
    }

post请求

public static String loginByPost(String username, String password) {
        String path = http://192.168.0.1:8080/Demo/Login;
        try {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);
            conn.setRequestMethod(POST);
            // 设置请求头信息
            conn.setRequestProperty(Content-Type, application/x-www-form-urlencoded);
            String data = username= + username + &password= + password;
            conn.setRequestProperty(Content-Length, data.length() + );
            conn.setDoOutput(true); //设置可输出流
            OutputStream os = conn.getOutputStream(); //获取输出流
            os.write(data.getBytes()); //将数据写给服务器
            int code = conn.getResponseCode();
            if (code == 200) {
                InputStream is = conn.getInputStream();
                return StreamTools.streamToString(is);
            } else {
                return "网络访问失败";
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "网络访问失败";
        }
    }

工具类

public class StreamTools {
  // 将输入流转换成字符串
    public static String streamToString(InputStream is) {
      ByteArrayOutputStream baos;
        try {
            baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = is.read(buffer)) != -1) {
                baos.write(buffer, 0, len);
            }
            byte[] byteArray = baos.toByteArray();
            return new String(byteArray);
        } catch (Exception e) {
            LogUtil.i("StreamTools", e.toString());
            return null;
        } finally{
          baos.close();
            is.close();
        }
    }
}
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
43
分享
相关文章
Android数据存储:请解释ContentProvider是什么,它的主要作用是什么?
ContentProvider是Android的四大组件之一,主要负责结构化数据的管理与共享。它封装数据并提供安全的访问接口,通过URI实现应用间数据的标准化共享。ContentResolver与ContentProvider协作,处理数据的CRUD操作,使得其他应用能方便地调用和操作数据。
70 0
Android数据存储的五种方式2
Android数据存储的五种方式
87 0
Android数据存储的五种方式1
Android数据存储的五种方式
148 2
Android数据存储:什么是Room Persistence Library?
Android数据存储:什么是Room Persistence Library?
156 0
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
107 0
Android数据存储:什么是SharedPreferences?它有什么用途?
Android数据存储:什么是SharedPreferences?它有什么用途?
347 0
android开发,使用kotlin学习数据存储
android开发,使用kotlin学习数据存储
138 0
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
104 0
Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
275 0

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
    67
  • 2
    Android历史版本与APK文件结构
    121
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    44
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
    23
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    5
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    12
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    12
  • 8
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    1
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 1
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    24
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    33
  • 3
    Android历史版本与APK文件结构
    121
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    57
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 8
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    119
  • 10
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等