Android内置数据库SQLite

【在Visual Studio 2019中使用SQLite3库实现学生信息管理系统】 Visual Studio 2019安装SQLite3 学生信息管理系统的SQLite3实现 阅读详情

Android为我们提供了一个SQLiteOpenHelper帮助类来帮助我们方便地管理数据库。不过SQLiteOpenHelper是一个抽象类,我们需要建立一个自己的类去继承它,并且重写它的onCreate(),onUpgrade()方法,在这两个方法里面去写创建,升级数据库的逻辑。

getReadableDatabase(),getwriteableDatabase()都可以创建或者打开一个现有的数据库(如果数据库已经存在则直接打开,否则就自己创建一个数据库),不过,当数据库不可写入的时候,getReadableDatabase()方法只能以只读的方式打开数据库,而getwriteableDatabase()方法将会出现错误。

public class MyDatabaseHelper extends SQLiteOpenHelper {
    public static final String CREAT_BOOK="creat table book ("
            +"id integer primary key autoincrement,"
            +"author text,"
            +"price real,"
            +"pages integer,"
            +"name text)";
    private Context mContext;
    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        this.mContext = mContext;
    }
    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(CREAT_BOOK);
        Toast.makeText(mContext,"Create suceeded",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){

    }
}

这里,我新建一个MyDatabaseHelper类继承SQLiteOpenHelper抽象类,并且重写了一个构造方法。这里我简单说下构造方法里面的各个参数:第一个是Context,第二个是数据库的名字,第三个是参数允许我们在查询数据时返回一个Cursor,一般传入null,第四个参数表示数据库的版本号;这里我们还把建表语句定义成一个字符串常量;接着我们在onCreate()方法里面调用execSQL()方法去执行这条建表语句,弹出一个Toast.

贴上XML代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/create_database"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Create database"/>
  </LinearLayout>

贴上MainActivity中的代码

public class MainActivity extends AppCompatActivity {
    private MyDatabaseHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper=new MyDatabaseHelper(getApplicationContext(),"BookStore",null,1);
        Button createDatabase=(Button)findViewById(R.id.create_database);
        createDatabase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dbHelper.getReadableDatabase();
            }
        });
      }
}

这样运行之后,数据库就建立成功了。

数据库的升级

在上文中,我们并没有在MyDatabaseHelper中重写onUpgrade()方法,这个方法是用于对数据库的升级的。

接下来,我们需要往数据库里面再添加一个表,在MyDatabaseHelper里面添加

public static final String CREATE_CATEGORY="create table Category("
            +"id integer primary key autoincrement,"
            +"category_name text,"
            +"category_code integer)";
@Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(CREAT_BOOK);
        db.execSQL(CREATE_CATEGORY);

       Toast.makeText(mContext,"Create suceeded",Toast.LENGTH_SHORT).show();
    }

不过如果我们已经运行过上面的例子之后,那么此时我们再次运行可能发现我们结果并不会像我们想的那样,什么原因呢?原因在于此时已经存在数据库了(我们第一次运行创建的数据库)。所以我们点击Button按钮,MyDatabaseHelper里面的onCreate()方法都不会再执行了。这时候我们就需要运行SQLiteOpenHelper的升级功能了。修改代码如下

@Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(CREAT_BOOK);
        db.execSQL(CREATE_CATEGORY);

        Toast.makeText(mContext,"Create suceeded",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
        db.execSQL("drop table if exists Book");
        db.execSQL("drop table if exists Category");
        onCreate(db);
    }

我在onUpgrade()方法中执行了两条DROP语句,如果发现数据库里面已经存在Book表或者Category表,那么就把它给删除,然后在执行onCreate()方法。

如何让onUpgrade()方法执行了,这里我们只需要在MainActivity里面把MyDatabaseHelper()构造方法里面最后一个参数传入一个比原先版本号大的数字就可以了。

在android项目里使用自带的SQLite数据库 最近在项目中需要在App中内置股票码表和公司名,实现在不联网状态下,第一是使用App也能搜索到公司名和码表信息,试了很多网上方法,困扰了一天,最后采取如下方法解决;使用android默认的访问sqlite的方法,访问的是:data/data/你的项目package/database/数据库名称 下的数据库,假如要在项目中打包db文件,该怎么弄呢? 阅读详情

相关推荐

Android Studio Database Inspector:实时调试本地SQLite数据库的完整指南

在移动应用开发中,本地数据存储是核心环节,SQLite作为Android平台默认的嵌入式关系型数据库,其数据持久化机制直接影响应用性能与稳定性。理解数据库的运作原理,掌握实时查看与调试技术,对于排查数据一致性、验证ORM框架行为以及优化查询性能具有重要价值。在Android开发场景下,通过集成开发环境的内置工具直接连接运行时数据库,进行可视化浏览、SQL查询与数据编辑,已成为提升开发效率的关键实践。本文将围绕Android Studio的Database Inspector这一核心工具,结合Room持久化库

weixin_42619742的博客 370

Android 使用sqlcipher加密和解密数据库(包括加密和解密已有的数据库,还有如何查看数据库教程)

我们知道Android系统有一个内嵌的SQLite数据库,并且提供了一整套的API用于对数据库进行增删改查操作,SQLite是一个轻量级的、跨平台的、开源的嵌入式数据库引擎,也是一个关系型的的使用SQL语句的数据库引擎,读写效率高、资源消耗总量少、延迟时间少,使其成为移动平台数据库的最佳解决方案(如Android、iOS)

UrasakiNakajima的博客 6097

sqlite management studio

sqlite management studio, 用vs2008开发的一个管理sqlite 数据库的工具,有源码,能显示sqlit中的对象,能运行sql命令。略微借鉴了Sql Server Management studio

SQLlite在安卓中的基本详解和简单使用,我的腾讯Android面试经历分享

SQLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称这为“弱类型”。当我们出去找工作,或者准备找工作的时候,我们一定要想,我面试的目标是什么,我自己的技术栈有哪些,近期能掌握的有哪些,我的哪些短板 ,列出来,有计划的去完成,别看前两天掘金一些大佬在驳来驳去 ,他们的观点是他们的,不要因为他们的观点,膨胀了自己,影响自己的学习节奏。

m0_60635321的博客 1702

影刀RPA进阶:Excel多条件筛选与数据提取实战

本文详细介绍了如何利用影刀RPA实现Excel多条件筛选与数据提取的自动化。通过拆解文本、数值、日期及颜色筛选等核心指令,并结合实战案例,指导用户构建稳健的销售数据提取机器人,从而高效处理复杂数据报表,提升工作效率。

onion的博客 529

Visual C++与WPF混合开发:C++/CLI桥接技术实现现代化桌面应用

在桌面应用开发领域,混合编程技术是连接不同技术栈、复用核心资产的关键手段。其核心原理在于通过特定的桥接层,实现托管代码与非托管代码之间的互操作,从而打破语言和运行时环境的壁垒。这项技术的核心价值在于,它允许开发者将高性能、高稳定性的原生C++业务逻辑库,与现代化、高表现力的WPF用户界面无缝结合,避免了重写核心代码的巨大成本和风险。在工业控制、数据可视化、上位机软件等对性能和界面均有高要求的应用场景中,这种架构尤为适用。本文以C++/CLI作为桥接技术,详细演示了如何构建一个包含原生C++核心层、C++/C

weixin_33146151的博客 278

Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练-绿豆通讯录)】

(壹)SQLite数据库简介 (贰)数据库的创建 (叁)数据库的使用 3.1、SQlite的基本操作 3.1.1、添加数据 3.1.2、修改数据 3.1.3、查询数据 3.1.4、删除数据 3.2、SQLite中的事务 3.3、实战演练——绿豆通讯录 前情提要(绿豆通讯录+ListView) 实现步骤 and 技术要点 activity_main.xml MyHelper.java MainActivity.java 运行截图 (肆)数据显示控件 ListView控件 常用数据适配器(Adapter)

upward 8303

手把手教你用OPA运放和MOS管搭建恒流源电路(附完整电路图)

本文详细介绍了如何使用OPA运放和MOS管搭建高精度恒流源电路,涵盖核心元器件选型、电路设计、工作原理及实际搭建步骤。通过负反馈控制机制和MOS管工作区设置技巧,实现稳定的电流输出,适用于LED驱动、电池充电等场景。附完整电路图和调试技巧,助您快速掌握恒流源设计。

weixin_29239279的博客 535

安卓数据库SQLite

安卓数据库SQLite

似霰的博客 7984

OBS直播美颜全攻略:从插件下载到参数调校一站式指南

本文提供OBS直播美颜插件从下载安装到参数调校的一站式指南。详细介绍了如何安全获取并安装OBS美颜插件,重点讲解了在OBS中添加美颜滤镜的核心步骤,并分享了磨皮、肤色调整、细节增强等关键参数的实战调校技巧,帮助主播打造自然、专业的直播形象。

weixin_29197835的博客 324

IP白名单校验

支持格式: 1、127.0.0.1 // 指定固定IP 2、127.0.0.1-127.0.0.128 // 可使用“-”来表示一个IP区间,支持跨IP段(一般不会出现这种情况,跨IP段则配置多个规则) 3、127.0.* // 2~4位IP段可...

2199

Android studio学习之路(七)---内置数据库sqLite的使用

Android studio内置数据库sqlite的使用

lll23333l的博客 1743

华为云计算——FusionCompute创建虚拟机

华为云计算——FusionCompute创建虚拟机

jks212454的博客 3675

Android基础知识 - 内置SQLite数据库

SQLite数据库简单介绍 SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百K的内存就足够了,因而特别适合在移动设备上使用。 SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务。 它甚至不用设置用户名和密码就能使用,可以快速上手。 前面所学的文件存储和SharedPreferences存储毕竟只能适用于去保存一些简单的数据和键值对,当需要存储大量复杂的关系型数据的时候,就需要使用SQLite数据库,用来存储这些数据量大、结构性复杂的数据。 创建数据

weixin_43636084的博客 5645

lammps模拟技巧:高熵合金势函数设置三种方法

大家好,我是小马老师。 本文继续介绍lammps模拟中的势函数设置方法。 在前面的文章中,介绍过高熵合金的建模:高熵合金建模 高熵合金包含的原子数较多,势函数的设置相对复杂,在平时一对一的咨询中,这种问题也相对较多。 下面介绍三种高熵合金势函数设置方法。 1.下载专用势函数 下面的网站包含了大多数原子的势函数: https://www.ctcms.nist.gov/potentials/ 如需下载包含Fe原子的势函数,直接点Fe: 出现势函数列表: 比如Al-Co-Cr-Fe-Ni就是高熵合金AlCoC

lammps_jiayou的博客 8962

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android Debug Database:3步实现无痛SQLite数据库调试

还在为Android应用中的SQLite数据库调试而头痛吗?每次修改数据都需要导出数据库文件,用第三方工具打开,再重新导入吗?Android Debug Database将彻底颠覆你的调试体验,让你在浏览器中直接操作数据库,调试效率提升10倍! 这款开源工具通过内嵌HTTP服务器,将本地数据库映射到Web界面,支持实时查看、编辑、查询和导出操作。无论是普通SQLite数据库、Room持久化库,还

gitblog_00564的博客 789

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android 学习心得(2)——Android内置数据库SQLite

 一、简介:    Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型)、BLOB(二进制)、INTEGER(整型)、REAL(浮点型)、TEXT(字符串文本),虽然有着五种数据之分,但是在内部SQLite存储数据是无类型的,也就是说你可以在integer中存入char数据之类的。 二、要点: INTEGER PRIMARY KEY中只...

weixin_30809173的博客 236

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android内置数据库sqlite执行insert,单引号报错问题的解决

Android内置数据库sqlite执行insert,单引号报错问题的解决

qq_38472451的博客 224

adroid之Sqlite篇

sqlite是Android中内置的轻型数据库,可以使用sql命令,是一种完善的,轻型的数据库。 在Android中,每个应用程序都可以有自己的数据库实例,默认情况下是只能被自己访问的。 数据库存放在Android设备的/data/data/<package_name>/databases文件夹下。可以使用内容提供器在应用程序间共享数据库信息。使用sqlite数据库可分为以下步骤: (...

baidu_32015283的博客 400

android sqlite帮助类,Android中使用内置的轻量级数据库SQLite存储信息

本文讲一下关于SQLite的使用一、首先我们需要掌握sql语句:1、创建表create table 表名(字段 字段数据类型,字段 字段数据类型...)create table student(_id integer primary key autoincrement,name varchar(10),age integer)2、删除表drop table 表名drop table student...

weixin_29214335的博客 349

Android在未root手机获取应用内置的SQLite数据库到电脑上处理的方法(数据库备份与恢复-支持SDK30+)

我们可以利用文件拷贝的方法,在app内置一个数据库备份与恢复功能,即实现从内部到外部的文件复制进出功能即可实现内部数据库的交换。在android中我们常用sqlite数据库来存放文件,在开发中我们可能需要查看数据库中的所有的数据,以保证数据的准确性。在已经root的手机下,我们可以进入。即可,而在6.0中,则需要在activity中用代码来请求一些敏感的权限,其中就包括对sd卡的操作权限。其实这个问题是由于Android6.0更新了权限机制,在6.0之前,写入sd卡权限只需在清单文件中添加。

wh445306 1193

如何用dos窗口对Android内置的SQLite数据库进行操作

用dos窗口对Android内置的SQLite数据库进行操作 前言:         我们都知道在真机上是不允许打开data/date目录的,那么我们如何对data/data目录下的SQLite进行操作呢?         用dos!! 【准备工作】       首先要确保自己的dos窗口中的adb命令可用,如果不可用,打开服务的方法如下   【开启adb服务】 

scarecrow_fly的博客 530

Android SQLite 数据库使用初探

一. 简介 SQLite 数据库是Android系统的内置数据库,数据库一般以文件的形式存放在/data/data/<your package name>/databases路径下。 二. 使用方法 数据库的使用一般包括以下几个步骤 新建数据库 建表 插入数据 修改数据 删除数据 查询数据 下面我们结合代码来分步讲解数据库的使用方法: 在Android系统中,数据库的操作是通过一个...

yifei325325的专栏 249

Android Studio 打开 Room 可视化查看器(Database Inspector)

Android Studio 自带了 Room 可视化查看器, 虽然早在 Android Studio 的版本更新说明中看到了, 但是一直没有找到打开的按钮或菜单 😓, 今天终于找到了办法😄 没有打开的话,按如下图操作: 如下图, 可以不打断点, 直接运行 Debug , 这样就可以看到了: 具体的使用办法可查看文档。 官方文档: https://developer.android.google.cn/studio/inspect/database

记笔记 9928

android 内置关系型数据库 SQLite

SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话, 就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是  onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。 SQLiteOpenHelper 中还有两个非常重要的实例方法,getReadab

cassie890222的博客 712
上一篇: 探究服务(二)--AsyncTask
下一篇: MySQL简单语法(1)
OneLinee
博客等级 码龄10年 11粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值