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

【Android】数据存储_问答

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

【Android】数据存储_问答

Content保存数据到文件使用共享首选项 (Shared Preferences)序列化SQLite数据库 保存数据到文件

在android设备中什么是internal和external存储区?

internal,内部存储区,不易失,保存的文件是 app 私有的 external,外部存储区,分为可移除和内部分区,不是总可用的,不具有保密性 (world-readable)
外部存储可存储两种类型的文件,public 和 private,后者随 app 删除而删除
其中 private 文件属于 app,虽在技术上可以被用户与其它 app 访问,但对于他们而言没有意义

默认情况下,app是安装在哪种存储区中?如何改变到其他存储区?

internal 可通过清单文件中的
android:installLocation
属性更改

internal存储区的目录结构通常是怎样的?

通常为
data/data/app_name/

在internal存储区存放文件的时候,通过哪些方法获取内部存储的目录对象?对文件操作及流操作模糊的同学请回到java复习相关知识

getFilesDir() 		返回一个代表 internal 目录的 File 对象
getDir(name,mode) 	在 internal 目录中创建或者打开一个目录
getCacheDir() 		返回一个用于存放你的 app 临时 缓存文件的 internal 目录
File file = new File(getApplicationContext().getFilesDir(), filename);

向internal存储区写文件的代码模板是怎么样的?请理解。

public void save(View view) {
     EditText et_input = (EditText) findViewById(R.id.et_input);
     String content = et_input.getText().toString();
     String filename = "data.txt";
     FileOutputStream fos;
     try {
         fos = openFileOutput(filename, Context.MODE_PRIVATE);
         fos.write(content.getBytes());
         fos.close();
         Toast.makeText(this, getString(R.string.success), Toast.LENGTH_SHORT).show();
     } catch (IOException e) {
         e.printStackTrace();
     }
 }

从internal存储区读文件的代码模板是怎样的?请理解。

byte[] buffer = new byte[fis.available()];      //测试 byte 数组的大小
fis.read(buffer);
content = new String(buffer);
还有
//按字符读
int ch;
ch = fis.read();
while(ch != -1) {
	fileContent += (char)ch;
	ch = fis.read();
}
详见 数据存储.

对external存储区进行读写的时候,应该在manifest文件中怎么设置?

在 manifest 中声明权限

在对external存储区进行操作之前应该怎么做?为什么这么做?

检测是否可读可写 因为 external storage 可能不可用,如SD卡被移除

在external存储区中能存放的文件分为哪两类?针对这两类文件,在获取存放目录对象的时候,采用什么方法调用?如果刚开始的时候,没有预定义的子目录用于存放你的文件,该怎么做?

public 和 private 前者采用 getExternalStoragePublicDirectory 方法
后者采用 getExternalFilesDir 方法创建目录 给 getExternalFilesDir() 传递 null,它会返回你的 app 在外部存储下的私有的根目录 没懂

当用户在卸载app的时候,哪些内容是系统自动删除的,哪些是程序员需要关照删除的?

系统自动删除:internal storage 中的、external storage 中 private 的 手动删除:通过 getCacheDir 方式创建的缓存文件,还有一些不会再用到的文件 使用共享首选项 (Shared Preferences)

什么是SharedPreferences?

一个Shared Preferences对象指向一个保存键值对的文件,并且提供了简单的方法来读写它们

如何来创建或者访问一个sharedPreferences?

getSharedPreferences 通过名字区分 getPreferences 只需一个共享 preference 文件时

如何将键值对写入SharedPreferences文件中?注意不是使用SharedPreferences对象直接写入,而是使用SharedPreferences.Editor来写入数据

edit 获取 editor,写入用 putString 等,提交用 commit 方法
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

如何从SharedPreferences文件中读取数据?

用 getString、getInt 方法
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
序列化

什么是序列化?xml序列化的操作步骤

序列化是将对象状态转换为可保存或传输的格式的过程 1.创建文件
2.打开文件输出流
3.创建相应的序列化器
File file = new File(Environment.getExternalStorageDirectory(),"Person.xml");
FileOutputStream fos = new FileOutputStream(file);
XmlSerializer serializer = Xml.newSerializer();
然后 通过序列化器对转换进行操作.

什么是bean?bean中的成员变量一般为private的?那这种成员变量的值怎么进行设置与获取?

如果读写方法符合以下这种命名规范,那么这种
class
被称为 JavaBean
// 读方法:
public Type getXyz()
// 写方法:
public void setXyz(Type value)
对 外部不能直接访问,但可通过类中的 set get 方法对其进行设置与获取

有几种xml解析方式?PULL解析过程

三种,DOM解析、SAX解析和PULL解析 1.创建解析器
2.设置解析器的 xml 来源
3.获取当前事件类型,解析器状态
4.循环处理 xml SQLite数据库

如何在命令行中进入sqlite的工作界面

adb shell

如何让windows的控制台中正常显示sqlite中存放的汉字?

将控制台的字符编码切换为 utf-8 即可
chcp 65001

熟悉sqlite中的常用命令?

.open 数据库名称: 打开数据库,如果该数据库在磁盘中不存在,则创建并打开
.save 数据库名称: 如果 sqlite3 的启动是通过双击 windows 中的 sqlite3.exe 的图标打开的,系统会在内存中创建一个数据库,这个数据库如果需要存放到磁盘,则需要使用本命令进行存放。如果磁盘上如有同名的数据库,会覆盖
.databases: 用于列出数据库
.tables: 用于列出数据库中的数据表

定义contract类有什么用?

Contract类 是一些常量的容器,它定义了 URI 的名字、表名、列名等 Contract类允许你在同一个包下与其它类使用共同的常量 有助于数据库同 android 的 framework 很好的相容

定义helper类有什么用?熟悉该类中的常用方法

getWriteableDatabase()或者getReadableDatebase()方法,创建或打开数据库
比较耗时,需放在后台线程中调用

execSQL、rawQuery、query这三个方法在用于查询时什么区别?为防止sql注入,我们最好选用哪个方法来作查询?

execSQL 查询时使用 SQL 的 select 语句,无返回值
rawQuery方法与之类似,区别是返回一个 Cursor 对象
query 方法是 SQLiteDatabase 类中专门用来查询操作的方法 query,避免sql注入

ContentValues是个什么类?怎么用?

ContentValues 类中包含很多 get put 方法,通过 key 存值取值
ContentValues 对象,底层为 map 键值对,key 列名,value 列值 主要用来给数据库添加数据
public long insert (String table, String nullColumnHack, ContentValues values)

Cursor是什么类?怎么用?

Cursor 是一个接口,用于作为存放查询的结果集
Cursor c = db.query(FeedEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
//cursor 起始位置在 -1 处
cursor.moveToFirst();			//将读取点放在入口位置,read position
long itemId = cursor.getLong(cursor.getColumnIndexOrThrow(FeedEntry._ID));
List itemIds = new ArrayList();
while(cursor.moveToNext()) {
  	long itemId = cursor.getLong(cursor.getColumnIndexOrThrow(FeedEntry._ID));
	itemIds.add(itemId);
}
cursor.close();

什么是事务?它的标准处理模式是怎样的?

事务就是一组 SQL 语句,针对数据库的一组操作
db.beginTransaction();
try {
  ...
  db.setTransactionSuccessful();
} finally {
  db.endTransaction();
}

Android中如何开启事务如何关闭事务

开启事务 beginTransaction 以EXCLUSIVE模式 (排他) 其它线程不可读写
beginTransactionNonExclusive 以IMMEDIATE模式 可读不可写
方法参数 (SQLiteTransactionListener transactionListener),该方法中有事务监听器 关闭事务 endTransaction

简要描述SQLiteOpenHelper的主要作用

用于创建数据库,调用 getWriteableDatabase 或 getReadableDatabase 方法

简要描述一下SQLite数据库

一款轻型的数据库,是遵守 ACID 的关系型 DBMS,包含在一个相对小的 C 库中
设计目标是嵌入式,占用资源非常低,支持主流操作系统,能跟多种编程语言结合
处理速度快于MySQL、PostgreSQL

简要写出Android中创建数据库的步骤.

首先创建一个 SQLiteOpenHelper 类的子类,例如 FeedReaderDbHelper
然后实例化该子类,调用 getWriteableDatabase 或 getReadableDatabase 方法创建数据库
FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext());
SQLiteDatabase db = mDbHelper.getWritableDatabase();
然后用 ContentValues 插入数据
ContentValues values = new ContentValues();
values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id);
这个方法
public long insert (String table, String nullColumnHack, ContentValues values)
在调用 getWriteableDatabase 方法是时候打开或创建了数据库

End.

Earnest~ 原创文章 95获赞 190访问量 2万+ 关注 私信 展开阅读全文
作者:Earnest~


免责声明:

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

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

【Android】数据存储_问答

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

下载Word文档

猜你喜欢

【Android】数据存储_问答

Content保存数据到文件使用共享首选项 (Shared Preferences)序列化SQLite数据库 保存数据到文件在android设备中什么是internal和external存储区? internal,内部存储区,不易失,保存的
2022-06-06

【Android】数据存储

Content1. 保存数据到文件1.1. 内部、外部存储区1.2. 在内部存储区 (internal) 存放文件1.3. 在外部存储区 (external) 存放文件2. 使用共享首选项(Shared Preferences)3. 序列化
2022-06-06

Android数据的存储

目录小朋友,你是不是有很多问号???关于数据的存储一、SharedPreferences的应用(重要)1、获取sp的实例2、获取编辑器3、存数据4、提交数据5、回显数据二、生成xml的第一种方式(不是authority用法)1、创建sb对象
2022-06-06

【Android-数据存储】外部存储(存储在SD卡上)

android的数据存储主要分为三类: 内部存储:link. 外部存储 sharedpreferences:link. 本文主要介绍外部存储的相关知识。 存储路径:/storage/emulated/0 ——————————————————
2022-06-06

Android数据存储基础:

1.基础: 1.1.Android 数据存储路径: 内部存储:/data/data/packageName/databases: 数据库/data/data/packageName/file:   内部存储/data/data/packag
2022-06-06

Android SQLite数据库存储

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

Android中的数据储存之文件存储

当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢?就是指储存在内存中,有可能因为程序关闭或
2023-06-04

android数据存储之文件存储方法

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。概述 文件存取的核心就是输入流和输出流。 Android文件的操作模式 文件的相关操作方法文件读写的实现
2022-06-06

android数据存储与访问的方式有哪些

Android数据存储与访问的方式有以下几种:1. Shared Preferences(共享首选项):用于存储简单的键值对数据,适用于存储用户设置、应用配置等。2. Internal Storage(内部存储):将数据存储在应用的私有文件
2023-09-04

Android基础教程数据存储之文件存储

Android基础教程数据存储之文件存储将数据存储到文件中并读取数据1、新建FilePersistenceTest项目,并修改activity_main.xml中的代码,如下:(只加入了EditText,用于输入文本内容,不管输入什么按下b
2023-05-30

Android数据存储之SQLite使用

SQLite是一款开源的、嵌入式关系型数据库,第一个版本Alpha发布于2000年。SQLite在便携性、易用性、紧凑性、高效性和可靠性方面有着突出的表现。 在Android中创建的SQLite数据库存储在:/data/data/<包名>/
2022-06-06

四种Android数据存储方式

Android提供以下四种存储方式:SharePreferenceSQLiteFileContentProvider Android系统中数据基本都是私有的,一般存放在“data/data/程序包名”目录下。如果要实现数据共享,正确的方式是
2022-06-06

Android(数据存储:文件存储、SharedPreferences)验证QQ密码

前情提要1 :静态页面-简易QQ登录页面(纯activity_main.xml页面) 【https://blog.csdn.net/weixin_44949135/article/details/104504728】 前情提要2 :动态页面
2022-06-06

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

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

详解Android的网络数据存储

一、网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中。 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法。 本文利用LeanCloud来进行网络数据的存储。 LeanClou
2022-06-06

android数据存储方式有哪些

Android有多种数据存储方式,包括:1. SharedPreferences:用于存储简单的键值对,适用于存储应用的配置信息等小量数据。2. 文件存储:可以使用内部存储和外部存储来存储文件,适用于存储一些大文件或复杂数据。3. SQLi
2023-08-11

Android中怎么实现数据存储

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

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

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

android使用SharedPreferences进行数据存储

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用propert
2022-06-06

编程热搜

  • 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第一次实验

目录