android SQLite数据库使用总结之(一)从加载本地数据库开始

Android-指定路径创建 SQLite 前言 今天大佬让我把创建的数据库存储路径改为 SD 下,自信满满低改了结果崩溃,在此记录一下。 正文 我们创建数据库一般就是集成 SQLiteHelper ,在构造方法把 DB_NAME 传进入,就会默认在 data/data/<`package_name>/database/ 下创建,在里面的文件也相对有安全性,删除应用的时候也会一起删除掉。但是总会遇到不同的需求场景。然... 阅读详情

好久以前就写了,但是一直拖拖拉拉的,在草稿箱里放了两个星期还没写完,想想这样托下去又要废掉了,还是分开来吧,写多少是多少。


android的SQLite数据库简单使用一段时间了,现在想抽些时间总结下,不然总感觉很乱


1、先说一个工具:SQLiteExpert 


SQLite Expert,一款SQLite数据库操作工具,下载地址:http://www.sqliteexpert.com/  ,Personal Edition是免费的,日常使用基本足够,需要专业版的可以自行网上寻找。当然,其他免费的工具还有很多,如:SQLite Database Browser,SQLiteManager等。



2、从加载一个本地数据库开始

假设我们的SDCard的根目录上已经存在一个数据库,名称为:ChinaCity.db。这时候我们可以这样操作:

public void readDataBaseFromSDCard() {
		String dbPath = Environment.getExternalStorageDirectory() + "/ChinaCity.db";
		
		File dbFile = new File(dbPath);
		if (!dbFile.exists()) {
			Toast.makeText(getApplicationContext(), "请先点击拷贝到SDCard", Toast.LENGTH_LONG).show();
			return;
		}
		
		openOrCreateDatabase(dbPath, SQLiteDatabase.CREATE_IF_NECESSARY, null);
		
		SQLiteDatabase db = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
		// db = openOrCreateDatabase(dbPath, SQLiteDatabase.OPEN_READWRITE, null);
		
		StringBuffer sb = new StringBuffer();
		Cursor cursor = db.rawQuery("select * from china_provinces_code", null);
		while (cursor.moveToNext()) {
			int id = cursor.getInt(cursor.getColumnIndex("_id"));  
	        String name = cursor.getString(cursor.getColumnIndex("name"));  
	        sb.append(id + ":" + name + " \n");
		}
		System.out.println(sb.toString());
	}



先用SQLiteDatabase的一个静态方法openDatabase一个数据库,第一个参数为数据库文件路径,第二个参数一般为null,第三个参数为打开数据库的方式,由于只需要读取数据,所以我们选择SQLiteDatabase.OPEN_READONLY,此种方式的好处是数据库存在的话就不会出错;另外一种为SQLiteDatabase.OPEN_READWRITE,以读写的方式打开。执行上面代码,我们会看与上图信息相同的:


开发的时候,我们可能会需要一些初始化数据,比如城市信息,这样我们就可以事先创建好一个数据库,写入初始数据,将其放入自己的apk中一起分发。这个时候我们就可以直接从资源文件中读取这个数据库文件写入到应用的数据库目录或者SDCard中,然后就可以对其操作,拷贝代码如下:

	/**
	 * 拷贝资源中数据库
	 * @param where 1SDCARD,2LOCAL
	 */
	public void copyDataBase(int where) {
		// 每个应用都有一个数据库目录,他位于 /data/data/packagename/databases/目录下
		String packageName = "com.ttdevs.citydata"; // xml中配置的
		String dbName = "ChinaCity.db";
		String dbPath = null;
		if(where == 1){ // sdcard
			dbPath = Environment.getExternalStorageDirectory() + File.separator + dbName;
		} else { // local
			dbPath = "/data/data/" + packageName + "/databases/" + dbName;
		}
		
		if(where == 2){
			new File("/data/data/" + packageName + "/databases/").mkdirs();
		}

		if ( where == 1 && !Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
		    return ; // 未挂载外部存储,拷贝到内部不用判断
		}
		
		File dbFile =new File(dbPath);
		if(dbFile.exists()){
			dbFile.delete();
		}
		try {
			dbFile.createNewFile();
		} catch (IOException e1) {
			e1.printStackTrace();
			return ;
		}
		
		try {
			InputStream is = getResources().getAssets().open(dbName);
			OutputStream os = new FileOutputStream(dbPath);

			byte[] buffer = new byte[1024];
			int length = 0;
			while ((length = is.read(buffer)) > 0) {
				os.write(buffer, 0, length);
			}

			os.flush();
			os.close();
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		Toast.makeText(getApplicationContext(), "拷贝成功", Toast.LENGTH_LONG).show();
	}

代码不是很严谨,凑活着看哈。经过以上步骤,我们就可以开始使用数据库,数据库的常用操作,在以后的博客中继续。


ChinaCity.db数据库:下载

Android(安卓)订餐APP(Sqlite数据库,完整的增删改查) Android(安卓)订餐APP(Sqlite数据库,完整的增删改查) 一.背景 首先说说项目的背景,基于地铁口鸡蛋饼的一个小项目,APP中固定设置的鸡蛋饼搭配,顾客也可以自己搭配 二.开发环境 AndroidStudio3.0.1 JDK1.8 语言:JAVA 数据存储:Sqlite 三.功能 注册、登录、管理员、普通用户 首页:鸡蛋饼食材搭配 订单:购买订单展示 ... 阅读详情

相关推荐

Android Studio插件Database Navigation实战:3分钟搞定SQLite数据库连接与查询

本文详细介绍了如何在Android Studio中通过Database Navigation插件快速连接和操作SQLite数据库。文章提供了从插件安装、数据库文件定位到建立连接、执行SQL查询的完整实战指南,旨在帮助Android开发者在3分钟内提升数据库调试与开发效率,避免繁琐的上下文切换。

weixin_29269441的博客 236

【Android studio】批量数据导入到android 本地数据库

android studio中导入大量数据到本地项目原有的数据库中(纯工具操作)

逆流而上 2232

Android平台SQLite数据库可视化查看与编辑工具

SQLite看似简单,实则博大精深。从一个.db文件的二进制布局,到Android中复杂的权限与多用户隔离机制;从基本的CRUD操作,到线程安全与异常处理——每一个细节都在影响着应用的稳定性与用户体验。更重要的是,当你掌握了底层原理,你会发现很多“玄学问题”都有了解释,很多“高级工具”也不再神秘。所以,下次再看到那个静静躺在里的.db文件时,不妨试着问一句:“嘿,兄弟,你想告诉我什么?” 😉本文还有配套的精品资源,点击获取。

weixin_32687875的博客 932

Android 数据储存的方式之本地数据库储存

Android 数据储存的方式有很多种 —— SharedPreferences 储存  、 文件储存 、 数据库储存 、 网络储存(储存到后台网络) ,虽然储存方式那么多,但是这些储存方式也有一定的规律可寻: SharedPreferences :  存储 key value 键值对类型的简单少量的简单数据 (如用户名 ,密码 ,性别,年龄  。。。) 文件 :  没有固定规则的,大量的数据

豆子的博客 2万+

arcgis for android 读取加载sqlite数据库.rar

用“JDBC”连接数据库,arcgis for android 读取空间数据库。

VScode搭建Opencv(C++开发环境)

VScode配置Opencv一、准备软件二 、下载软件1、MinGw下载2、 Cmake下载3、Opencv下载三、编译1、cmake-gui2、make3、install四、 VScode配置1、launch.json2、c_cpp_properties.json3、tasks.json五、测试 用了半天事件,看了各种的博客终于配置成功了,在这里记录并分享一下,让更多的人少走弯路。 本次环境是Win 10. 一、准备软件 我们本次用到的3个软件,(建议读者文件路径,文件版本 尽量都和我相同,这样不容易出错

河旬的博客 8万+

android连接本地数据库sqlite,实现增删改查

Android应用数据存储简单来说有这么几种:文件存储、SharedPreference存储、SQLite数据库存储、网络服务器存储、ContentProvider等。如果需要存储的数据量大的时候,那么使用文件存储会有很大的弊端,例如:你想修改其中很微小的项就要先读取整个文件的内容,修改后再全部保存,非常耗时。SharedPerference大多数用来存储键值对形式的少量数据。所以学习使用SQLite来存储数据还是很有必要的。\ * \ * \ * 初始化数据库。

datian1234的博客 1650

ECU-TEST新手入门:从软件申请到第一个测试包创建的完整保姆级流程

本文详细介绍了ECU-TEST软件从申请试用、安装配置到创建第一个测试包的完整流程。针对新手用户,提供分步指导,包括界面认知、测试组件添加、变量定义及执行结果分析,帮助快速掌握汽车电子测试工具的基本操作。特别说明试用授权的两种获取方式和安装注意事项。

weixin_30606461的博客 481

Android Studio如何查看自己创建的SQLite数据库

Android Studio如何查看自己创建的SQLite数据库 在学习安卓开发的时候,有时候需要建立一个SQLite数据库,在创建完之后,想要查看的时候你不知道在哪里找,并且有时候找到了也不知道如何查看,现在就让我们来了解一下如何找到并查看安卓里的SQLite数据库,效果如下 下面开始操作 一. 找到SQLite数据库 1.如下图所示找到设备的文件 2.找到对应文件,路径为 /data/data/com.example.fileoperation/databases/test.db 3.现在已经找到它

qq_48736958的博客 2万+

TI 实时操作系统SYS/BIOS使用总结

1:概述: SYS/BIOS 是一个可扩展的实时的操作系统。具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片)。能够实现系统的模块化并可裁剪。 最大的特点就是:实时。 2:XDCtools: XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的AP

带头奋青的博客 5万+

【Cubietruck】Qt5.8.0 x64、x86、armhf三个版本的编译安装

一、       Preparation 以下环境配置支持虚拟机和实体机,但是实体机生产效率会相对高一点,实体机编译Qt的速度是虚拟机两倍以上。 若使用虚拟机,推荐使用VirtualBox,开源免费,尽量不要使用Vmware破解版。   Download List   名称 链接 下载项目 OS https://mirro

beatfan的博客 3658

Android studio引入外部SQLite数据库,获取数据库列表数据

Android studio引入外部SQLite数据库,获取数据库列表数据

NXBBC的博客 1万+

全志V3S开发板实战:从零构建嵌入式Linux系统

本文提供了一份针对全志V3S开发板(如LicheePi Zero)的零基础教程,详细指导如何从零开始构建嵌入式Linux系统。内容涵盖编译环境搭建、交叉工具链配置、U-Boot引导程序编译与烧录、Linux内核定制与编译,以及使用Buildroot构建根文件系统,最终实现系统成功启动,帮助开发者深入理解嵌入式系统构建全流程。

tensor9flow的博客 575

android中滑动SQLite数据库分页加载

今天用到了android中滑动SQlit数据库分页加载技术,写了个测试工程,将代码贴出来和大家交流一下: MainActivity package com.example.testscrollsqlite; import java.util.ArrayList; import android.app.ActionBar.LayoutParams; import android.app.A

水寒 7128

Unity零基础到入门 ☀️| 【UI系统学习】轻松学会 Unity 的 UGUI基础控件的使用(包括一个简易血条、蓝条设计)

Unity,UGUI。本篇博客来挑几种Unity中最常用的UI控件如何使用和使用技巧,包括一个简易血条蓝条的小实例

努力前行,总会成为自己心中的那道光 2万+

【Simulink教程案例18】基于simulink的基础OFDM+64QAM发射接收链路仿真

OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力,能够支持多用户接入。OFDM技术由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的。

FPGA/MATLAB学习教程/源码/项目合作开发 1990

WPF中使用SqLite数据库

在研究安卓手机与pc电脑使用数据线进行数据传输的过程中(为啥这么二,因为甲方人员不允许使用互联网,就算是内部的局域网wifi都不可以),涉及到了WPF操作安卓常用数据库SqlLite的操作,记录一下艰辛的历程。 直接使用sqLite官方的dll进行二次开发 首先在官网中SqLite官网中下载sqlite-netFx20-setup-x86-2005-1.0....

war3ismylove的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android程序db文件用什么编辑器,在 Android Studio 上调试数据库 ( SQLite )

以前 Eclipse 时代,调试 SQLite 都是将数据库文件导出到电脑,然后再用软件打开查看。现在我们用 Android Studio,有没有更方便的方法呢?SQLScout安装SQLScout 是一个 Android Studio 的插件,通过点击:Setting —> Plugings —> Browse Repositories搜索 SQLScout 安装即可。要是下载不动,...

weixin_33344952的博客 910

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

安卓 SQLite 基础知识(一)

Android 可能是本十年的热词。在短短的时间内,它已经占据了大部分手机市场。Android 计划在今年秋天通过 Android L 版本接管可穿戴设备、我们的电视房间以及我们的汽车。随着 Android 的快速增长,开发人员也需要提升自己的技能。面向数据库的应用程序开发是每个开发人员都应该具备的关键技能之一。应用程序中的 SQLite 数据库是数据中心产品的核心,也是构建优秀产品的关键。理解 SQLite 并实现 Android 数据库对一些人来说可能是一个陡峭的学习曲线。

龙哥盟 1017

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android读取db文件格式,android:sqlite的使用(读取res/raw的db文件)一种方法

1、android:sqlite的使用(读取res/raw的db文件)一种方法public static final StringDATABASE_FILENAME= "stock.db";// 这个是DB文件名字public static final StringPACKAGE_NAME= "com.huaxa.it.tuling";// 这个是自己项目包路径public static fina...

weixin_39724382的博客 831

Rome noGlobalObjectCalls 规则详解:禁止将全局对象当作函数调用

本篇技术指南围绕 Rome 的 `noGlobalObjectCalls` 规则展开,系统讲解它为什么禁止调用 `Math`、`JSON`、`Reflect`、`Atomics`、`Intl` 这五个全局对象、背后对应的 ECMAScript 规范依据、规则的实际诊断行为(含普通调用与 `new` 调用),并结合仓库源码剖析其基于语义模型的检测原理与测试覆盖。读完本文,你将清楚理解该规则的触发条件

gitblog_00562的博客 682

Android 使用SQLite数据库

Android 往SQLite数据库中存放类,更简单的使用数据库存储功能

qq_38174131的博客 6525
上一篇: 自定义listview,带按钮,多选框,处理item事件
下一篇: android SQLite数据库使用总结之(二)创建自己的数据库
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值