搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
IT小白
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
linux 网络环境部署二_一、部署网络环境 1、本试卷环境要求系统中有两台虚拟机,一台为虚拟机1(windows s
2
python爬虫(Selenium案列)第二十四
3
面试测试题-Linux-RHEL7(标准答案和评分标准)_centos系统的面试题
4
简单的手写EventBus通信
5
人工智能创业:机遇与挑战并存
6
基于Ubuntu-base构建根文件系统
7
RStudio安装GitHub上包出现 ”installation of package ‘tradeSeq’ had non-zero exit status“_r语言github的包无法安装
8
深入解析 Spring Boot 中的 Reactor 模型
9
FPGA实现串口的任意字节数发送_fpga发送不定长度数据怎么处理
10
开源AI项目:合同检查流程优化,提高工作效率与准确性_ai能够帮我们读懂合同吗
当前位置:
article
> 正文
sqlite存储大数据量数据之浅见_sqllite导致数据量
作者:IT小白 | 2024-05-13 07:51:06
赞
踩
sqllite导致数据量
老猫最近刚开始学习android,android中对于数据存储的方式有好几种,经过两天的学习,对于sqlite存储数据的性能和用法做一浅显的说明:
老猫从j2me开发一路走来,对于sqlite真是喜忧参半,囍的是在一个单机PDA环境下内嵌sqlite可以利用关系型数据库对数据进行操作,开发人员无须为以文本文件形式存储的数据进行查询,修改(定位而头疼),想当初三万条数据在j2me弱弱的文本操作环境下我用了将近60个文件进行存储并进行定位查询,修改操作,想当然速度不会很快,一条数据的查询时间将近3到4秒。忧的是:sqlite毕竟是个内嵌的关系型数据库,它存储数据是有限的,在j2me环境下老猫曾测试存储一万条数据就开始内存溢出了,闹心呀
。
从j2me转向android,可以看到API中对sqlite专门提供了操作的接口,于是我在考虑android环境下我如果给了它足够大的存储空间,他是否还会对我视而不见,(老猫一直认为sqlite存储较大量数据还是可以实现的,至于制约他的因素可能就是存储空间)。
这里我抛开真机或模拟器自带的内存,通过sd卡大容量的空间来存放我们的sqlite数据库。
第一:模拟器环境下:
去网站下载SQLite Expert Professiona工具,此工具是一个可视化创建sqlite数据库的工具很好用,下载地址:
安装完成后,界面如下图所示:
1、创建数据库:
在工具条栏选择File---new database,此时会弹出数据库添加界面,这里我们添加data file为dictionary,给database alias(
sqlite是文本数据库
)添加为c:\ dictionary
添加完成后点击 Ok 按钮,此时在左侧的列表中会看到你刚刚新创建的数据库
dictionary。
2、创建表
选中dictionary右键可以看到NEW TABLE,点击它,这里我们创建的表名为:t_wods,方式和你创建mysql表一样,填写字段,类型,字段大小等等,这里我们创建两个字段:english,chinese,都为varchar类型长度为20。
3.录入信息,为了测试方便,我直接将两万条的数据导入到该表中,现在dictionary文件的大小为5M.
此时我们的数据库就创建完成。对于c盘下的dictionary文件,我们先放下,下面开始给模拟器创建sd卡镜像。
3、(sd卡镜像文件的创建转载于别处,谢谢原作者)
创建一个
SD
卡镜像文件。
打开
cmd
,输入如下命令:
mksdcard 1024M sdcard.img
该命令会在当前目录下生成一个
sdcard.img
文件,该文件就是
Android
模拟器的
SD
卡镜像文件。
1024M
表示
1024
兆,即该
SD
卡有
1
个
G
的容量,也可用
K
做单位(
1M
=1024K
),
K,M
必须大写。
目前
Android
支持
8M
~128G
的
SD
卡
。
运行带有
SD
卡的模拟器
创建了
SD
卡镜像文件,只是创建了一个文件,还不能在模拟器中直接用,要在模拟器中可看到该
SD
卡,方法有两种,如下:
◆在
cmd
中,命令如下:
emulator -sdcard e:sdcard.img
◆在
Eclipse
中,在
Run->Run Configurations...
菜单里面的
Target
标签页里面,输入启动参数
以上工作完成,我们可以开始写代码了:
为了测试,我只写了一个小demo,大家能看懂即可:
public class Dictionary extends Activity implements OnClickListener, TextWatcher{
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/dictionary";
private final String DATABASE_FILENAME = "dictionary.db3";
SQLiteDatabase database;
Button btnSelectWord;
AutoCompleteTextView actvWord;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 打开数据库,database是在Main类中定义的一个SQLiteDatabase类型的变量
database = openDatabase();
// 下面的代码装载了相关组件,并设置了相应的事件
btnSelectWord = (Button) findViewById(R.id.btnSelectWord);
actvWord = (AutoCompleteTextView) findViewById(R.id.actvWord);
btnSelectWord.setOnClickListener(this);
actvWord.addTextChangedListener(this);
}
public void onClick(View view)
{
String sql = "select chinese from t_words where english=?";
Cursor cursor = database.rawQuery(sql, new String[]
{ actvWord.getText().toString() });
String result = "未找到该信息.";
// 如果查找english信息,显示其chinese信息
if (cursor.getCount() > 0)
{
// 必须使用moveToFirst方法将记录指针移动到第1条记录的位置
cursor.moveToFirst();
result = cursor.getString(cursor.getColumnIndex("chinese"));
Log.i("tran", "success"+result);
}
// 显示查询结果对话框
new AlertDialog.Builder(this).setTitle("查询结果").setMessage(result)
.setPositiveButton("关闭", null).show();
}
private SQLiteDatabase openDatabase() {
try {
// 获得dictionary.db文件的绝对路径
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
// 如果/sdcard/dictionary目录中存在,创建这个目录
if (!dir.exists())
dir.mkdir();
// 如果在/sdcard/dictionary目录中不存在
// dictionary.db文件,则从res\raw目录中复制这个文件到
// SD卡的目录(/sdcard/dictionary)
if (!(new File(databaseFilename)).exists()) {
// 获得封装dictionary.db文件的InputStream对象
InputStream is = getResources().openRawResource(
R.raw.dictionary);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
// 开始复制dictionary.db文件
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
// 打开/sdcard/dictionary目录中的dictionary.db文件
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
} catch (Exception e) {
}
return null;
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
}
运行程序效果如下(该数据在库中的第20004条):
示例二(该数据在19259行)
第二、真机环境下
模拟器上测试通过,下面在真机上进行测试:
首先将,本人用的是 华为c8500 真机sd卡下新建
dictionary文件夹,然后将dictionary文件拷贝到里面,从项目目录bin文件夹下降dictionary.apk文件也拷贝到sd卡下,安装测试,由于不好切图,就不上了,总之数据也能够正常查询出来。
以上过程只是个人对中型数据量的数据做的测试观点,当然如果硬是要存储几十万上百万的数据,估计够呛,对于上面的过程有想法的朋友可以留言交流,老猫也是新手一个,谢谢大家。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/IT小白/article/detail/562584
推荐阅读
article
electron
+
sqlite
3
解决
打包
后无法写入
数据库
_
electron
sqlite
...
electron
-builder +
sqlite
3
在windows环境下
打包
_
electron
sqlite
elect...
赞
踩
article
SQLite
基础
语法
学习_
sqlite
学习...
SQLite
是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数...
赞
踩
article
SQLite
入门
教程
(非常详细)零
基础
入门
到精通
,
收藏这一篇就够了_
sqlite
学习
...
不是 MySQL 用不起
,
而是
SQLite
更有性价比
,
绝大多数的应用
SQLite
都可以满足。是一个用 C 语言编...
赞
踩
article
【
SQLite
】的
使用
及指令| 编程
操作
(增删改查)
_
sqlite
使用
...
int i;for (i=0;//必须返回0,这样数据库中有多少条数据,这个回调函数就会被调用多少次int ret;//...
赞
踩
article
SQL
ite
3
数据库学习(二):
SQL
ite
中的
SQL
语句详解_
sql
ite
sql
语句...
SQL
ite
3
数据库学习(二):
SQL
ite
中的
SQL
语句详解_
sql
ite
sql
语句
sql
ite
sql
语句...
赞
踩
article
【
sqlite
】
命令
语法入门超
详细
介绍
_
sqlite
.
read
...
sqlite
超
详细
介绍
_
sqlite
.
read
sqlite
.
read
...
赞
踩
article
SQLite
数据库
入门教程
(GO)_
sqlite
学习...
SQLite
数据库
入门教程
(GO语言版本)_
sqlite
学习
sqlite
学习 ...
赞
踩
article
SQLite
3
数据库
学习
(
一):
数据库
和
SQLite
基础_
sqlite3
数据库
...
SQLite
3
数据库
学习
(
一):
数据库
和
SQLite
基础_
sqlite3
数据库
sqlite3
数据库
...
赞
踩
article
数据库
开发
(Sqlite)...
它是一种桌面
数据库
,只适合数据量少的应用,在处理少量数据和单机访问的
数据库
时是很好的,效率也高,但是它的同时访问客户端不...
赞
踩
article
【
Sqlite
】
sqlite
安装
与使
用
_
sqlite
用
什么
打开
...
sqlite
安装
与使
用
_
sqlite
用
什么
打开
sqlite
用
什么
打开
...
赞
踩
article
SQLite
--
SQLite
的
基本介绍和
安装
...
一、
SQLite
简介1、
SQLite
是一个软件库,实现了自给自足
的
、无服务器
的
、零配置
的
、事务性
的
SQL 数据库引擎...
赞
踩
article
Sqlite
比较
,
安装
,
使用
,
个人总结_
sqlite
数据量
...
sqlite
是本地存储数据库。
sqlite
以环境文件极小
,
跨全平台
,
高稳定的特点。适用于边缘存储和单机程序。
sqlite
...
赞
踩
article
sqlite
学习_
sqlite
的
学习资料...
mySQL:主要用于网站开发
的
数据库。(好几百兆)
sqlite
:用于嵌入式开发,(轻量级数据库)支持数据库大小至 2TB...
赞
踩
article
嵌入式
sqlite
3
数据库
学习笔记_#
define
sqlite
version
3.11
.0...
嵌入式
sqlite
3
一、
sqlite
3
安装 1.本地安装 下载安装包,官网地址:http://www.
sqlite
...
赞
踩
article
使用
nodejs
操作
sqlite
_
nodejs
sqlite
...
先下载
sqlite
数据库进行本地安装官方链接https://www.
sqlite
.org/index.html下载如图所...
赞
踩
article
sqlite
数据量
_
Sqlite
数据库
从入门到放弃...
Sqlite
应用场景:1、嵌入式
数据库
,开箱即用,
sqlite
数据库
本身很小(windows下只有4Mb左右,主流lin...
赞
踩
article
sqlite
数据量
_
Python
之
SQLite
实战...
文章来源:未闻Code作者:kingname阅读本文预计3分29秒我的公众号是使用Bear这个Mac App来写的。它在...
赞
踩
article
sqlite
mysql
本机
_[转载]
SQLite
简介 强大
的
本地
数据库
...
最近做
的
项目需要在客户端使用一个本地
数据库
来存放数据,想过使用Access,不过Access实在是太难用了,偶然间搜到了...
赞
踩
article
【
Sqlite
】
sqlite
安装
与与
使用
图文详解
_
sqlite
安装
...
一、
sqlite
介绍SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。...
赞
踩
相关标签
数据库
electron
sqlite
安全
网络安全
web安全
linux
c语言
学习
sql
alter
pragma
语法
golang
安装
键