android数据库

android SQLite使用介绍

拟墨画扇 提交于 2020-04-06 08:19:20
嵌入式关系型SQLite数据库与普通数据库的最大区别是: 嵌入式关系型SQLite数据库除了主键外,没有数据类型之分。即整型字段可以用来存放字符数据,反之字符串字段也可以用来存放整型值 SQLite使用方法步骤: 第一步:编写一个类并继承SQLiteOpenHelper; 该类我认为有两个作用:第一:用来取得操作sql语句的对象 第二:用来管理数据库的版本,可以进行相应的更新 简单的实例: public class DBOpenHelperService extends SQLiteOpenHelper { private static final String DATABASENAME = "smuoj.db"; //数据库名称 private static final int DATABASEVERSION = 1;//数据库版本 public DBOpenHelperService(Context context) { super(context, DATABASENAME, null, DATABASEVERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE _person (personid integer primary key

Android SQLite数据库使用 学习与代码实践

徘徊边缘 提交于 2020-03-25 07:26:17
Android SQLite数据库使用 学习与代码实践 SQLiteOpenHelper 类   用 SQLiteOpenHelper 类中的 getWritableDatabase() 和 getReadableDatabase() 方法可以获得数据库的引用。   为了实现对数据库版本进行管理, SQLiteOpenHelper 类提供了两个重要的方法,分别是 onCreate() 和 onUpgrade() ,前者用于初次使用软件时生成数据库表,后者用于升级软件时更新数据库表结构。   当调用SQLiteOpenHelper的 getWritableDatabase() 或者 getReadableDatabase() 方法获取用于操作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法。    onCreate() 方法在初次生成数据库时才会被调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。    onUpgrade() 方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的。   假设数据库现在的版本是1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构

Android SQLite入门简介

送分小仙女□ 提交于 2020-03-04 01:48:41
SQLite是一个轻量级的数据库,和C/S模式的数据库软件不同,他是进程内的数据库引擎,因此不存在数据库的客户端和服务器,而且Android系统自带了SQLite数据库。 首先我们科普一下数据库: 数据库大概分为关系型数据库和非关系型数据库,这两种大概的就是存储的方式不同。 关系型数据库 :是表格格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。例如:MySQL,Oracle数据库,SQL Server,Microsoft Access,还有我们要讲的SQLite也属于关系型数据库 非关系型数据库 :不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。例如:NoSQL(我没怎么用过非关系型数据库) 起始随着物联网的兴起也经常会用到时序型数据库例如:InfluxDB,Informix TimeSeries,我理解这个数据库也属于关系型,因为他也是以表格的形式存储的,但是叫法不一样,其中:database 数据库;measurement 数据库中的表;point 表中的一行数据。主要用于传感器的数据的采集与记录,后期我们可以试着让SQLite具备一些时序数据库的功能。 关系型数据库简介 上面提到了数据库是表格形式的。数据库、表、字段他们的关系是下面这样的 。好多地方说的数据库天花乱坠

Android中数据库升级说明

拜拜、爱过 提交于 2020-03-02 15:33:56
Andoird的SQLiteOpenHelper类中有一个onUpgrade方法。帮助文档中只是说当数据库升级时该方法被触发。经过实践,解决了我一连串的疑问: 1. 帮助文档里说的“数据库升级”是指什么? 你开发了一个程序,当前是1.0版本。该程序用到了数据库。到1.1版本时,你在数据库的某个表中增加了一个字段。那么软件1.0版本用的数据库在软件1.1版本就要被升级了。 2. 数据库升级应该注意什么? 软件的1.0版本升级到1.1版本时,老的数据不能丢。那么在1.1版本的程序中就要有地方能够检测出来新的软件版本与老的数据库不兼容,并且能够有办法把1.0软件的数据库升级到1.1软件能够使用的数据库。换句话说,要在1.0软件的数据库的那个表中增加那个字段,并赋予这个字段默认值。 3. 程序如何知道数据库需要升级? SQLiteOpenHelper类的构造函数有一个参数是int version,它的意思就是指数据库版本号。比如在软件1.0版本中,我们使用SQLiteOpenHelper访问数据库时,该参数为1,那么数据库版本号1就会写在我们的数据库中。 到了1.1版本,我们的数据库需要发生变化,那么我们1.1版本的程序中就要使用一个大于1的整数来构造SQLiteOpenHelper类,用于访问新的数据库,比如2。 当我们的1.1新程序读取1.0版本的老数据库时

数据存储之SQLite嵌入式数据库

南楼画角 提交于 2020-02-29 01:53:18
前两篇日志我已经总结了本地数据存储的前两种:文件和配置项。还剩下最后一种数据库存储——SQLite。 一、SQLite简介 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、 char (n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。 SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段中保存除整数以外的数据时,将会产生错误。另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息。 二、SQLite的CURD Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update

android SQLiteOpenHelper使用示例

…衆ロ難τιáo~ 提交于 2020-02-28 22:10:25
我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。 onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。 onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。 除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。 SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。 调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同

Android学习笔记 --- 数据存储与访问 (File,sdcard,sharedpreferences,sqlite)

ぐ巨炮叔叔 提交于 2020-02-28 21:12:05
一、 使用文件进行数据存储 1.context.openFileOutput()方法 写入文件内容 在上下文context中 openFileOutput方法可以用于把数据输出到文件中 示例代码: public static void fileStorage(Context context){ try { FileOutputStream fos = context.openFileOutput("filedata.txt", context.MODE_PRIVATE); fos.write("文件存储".getBytes()); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } openFileOutput()方法 的第一个参数用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,会自动创建,创建的文件保存在/data/data/包名/files目录下 如:/data/data/cn.itcast/files/itcast.txt openFIleOutput()方法的第二个参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVATE = 0 Context.MODE_APPEND = 32768 Context.MODE_WORLD_READABLE

android 基础一 <SQL>

南笙酒味 提交于 2020-02-15 17:20:10
android 提供了一个数据库操作的帮助类 SQLiteOpenHelper,我定义一个类继承SQLiteOpenHelper即可完成数据的创建和更新操作。 一、创建类基础 SQLiteOpenHelper 1 public class SqliteHelper extends SQLiteOpenHelper { 2 3 public SqliteHelper(Context context) { 4 // 数据库名称:sqltest.db 5 // 版本号:1 (初始化的时候设置成1,当这个版本号升级之后会触发onUpgrade函数) 6 super(context, "sqltest.db", null, 1); 7 } 8 9 //数据库第一次创建的时候调用,适合创建表结构 10 @Override 11 public void onCreate(SQLiteDatabase db) { 12 db.execSQL("sql语句"); 13 } 14 //数据库版本变更之后会执行,适合更改表的结构 15 @Override 16 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 17 18 } 19 } 二、获取SQLiteDatabase对象操作数据库

SQlite数据库存储及增删改查例子

家住魔仙堡 提交于 2020-02-02 05:25:52
MainActivity: package com . example . databasetest ; import androidx . appcompat . app . AppCompatActivity ; import android . content . ContentValues ; import android . database . Cursor ; import android . database . sqlite . SQLiteDatabase ; import android . os . Bundle ; import android . util . Log ; import android . view . View ; import android . widget . Button ; public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper ; @Override protected void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; setContentView ( R . layout .

Android数据库存放的具体位置

风流意气都作罢 提交于 2020-01-29 08:58:26
用adb在命令行来看。 1、运行输入 adb shell (前提是模拟器正在运行) 2、进入命令界面后 输入 ls 指令 会列出文件的目录 3、cd 进入你想要的目录里 4、一层一层进去后会发现 databases目录 你的数据文件就在这个目录下放着 5、sqlite3 test (test就是你创建的数据库的名称 注意:不要加.db 后缀) 6、现在你就进入你创建的test数据库了使用 .tables 就可以查看所有的表了; adb shell # find data -name "*.db" -print data/data/com.google.android.providers.contacts/databases/contacts.db data/data/com.google.android.providers.googleapps/databases/accounts.db data/data/com.google.android.providers.im/databases/im.db data/data/com.google.android.providers.media/databases/media.db data/data/com.google.android.providers.telephony/databases/mms.db data/data