四月二十五日 Android studio关于使用sqlite数据库

news/发布时间2024/5/19 7:57:30

昨天早上六点就起来要去排队考科目一,实在是困得很,昨天晚上早早就睡了,其实解释为什么昨天没有博客。

一个好消息就是我顺利的考过了,刚到90,还是很惊险。

还是说一下最近在干什么,之前是一直用的MySQL连接我的Android studio,最近在学习使用它自带的一个sqlite数据库,直接上代码。补充一下,就是我的代码中

    private static final int DATABASE_VERSION = 3;
这个初始值为1,而且Oncreate函数只有数据库不存在时,第一次创建时执行,好像是只能同时创建一个表,当然就会想我如果要添加新的表或者表里的字段(就是name,pasword...)呢,这就要用到下面数据库升级自动调用函数update。
可以看到我的代码就是对上述疑惑都进行实现。记得在改完后要让version加1,再执行程序。就是改一次加1,如果我删掉update代码部分,只留下修改表字段,version也改回2呢,结果就是不变,一旦执行后,就只能通过再次修改version和添加update代码。

 这是它可视化数据库,但是只能看,不能进行任何修改。



package com.example.myapplication2.database;import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;import androidx.annotation.Nullable;import com.example.myapplication2.bean.User;public class DatabaseHelper extends SQLiteOpenHelper {//    创建数据库名字private static final String DATABASE_NAME = "myDatabase.db";
//    SQLite数据库的版本private static final int DATABASE_VERSION = 3;
//    在首次创建DATABASE_NAME数据库里创建user表 以及两种书写方式方式
//public static final String CREATE_USER = "create table user (id integer primary key autoincrement, name text)";public static final String CREATE_USER = "create table if not exists user (" +"id integer primary key autoincrement," +"name text)";
//创建第二个表loginpublic static final String CREATE_LOGIN = "create table if not exists login (" +"name text," +"password text)";Context mContext;//创建SQLite数据库public DatabaseHelper(@Nullable Context context) {super(context, DATABASE_NAME ,null, DATABASE_VERSION );this.mContext = context;}//在第一次DATABASE_NAME数据库创建成功时调用@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL(CREATE_USER);Toast.makeText(mContext, "数据库首次创建成功!", Toast.LENGTH_SHORT).show();}
//数据库升级时自动调用@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {switch (oldVersion) {case 1:String sql = "ALTER TABLE user"+ " ADD COLUMN avatar text";db.execSQL(sql);  // 执行修改表,添加字段的逻辑。case 2:db.execSQL(CREATE_LOGIN);}}
//想user表里插入数据public void insertUser(User user){DatabaseHelper databaseHelper = new DatabaseHelper(mContext);SQLiteDatabase db = databaseHelper.getWritableDatabase();ContentValues contentValues = new ContentValues();if(db.isOpen()){contentValues.put("name",user.getName());contentValues.put("password",user.getPassword());db.insert("login",null, contentValues);db.close();}}
//   删除user表的内容}

  这个其实就是连接简便了一点,但是我现在觉得还是MySQL好用,虽然不好连接。那我说一下我的理由吧,就是现在我是创建了两个表,但是有一个user我想要删掉,就需要运行一下程序调用删除表的代码,还有如果想要删除其中的一条数据也要运行程序和代码。一个感觉就是繁琐,虽然可以导到Navicat但是还要在数据目录里找到复制保存到电脑上,然后才能连接,但是可视化工具也只能修改你复制下来的文件,原文件还是没有改变,还要将其覆盖。像是之前的MySQL就是可以实时修改,略去这些繁琐的步骤,可以大大减少开发时间。

 给人的感觉就是头大,为什么会这么繁琐呢。本来觉得终于可以避开MySQL连接繁琐问题了,又被这个拿住。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/80164668.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

HASHCTF2024

Secret of Keyboard 签到脚本题,有些同学的脚本解出来大小写不正确可能是由于脚本无法识别shift+字母的组合键 首先使用tshark: tshark -r usb.pcap -T fields -e usb.capdata | sed /^\s*$/d > usbdata.txt 提取数据并删除空格 然后脚本一把梭出来:keyboard.py: normalK…

用DolphinScheduler轻松实现Flume数据采集任务自动化!

转载自天地风雷水火山泽 目的 因为我们的数仓数据源是Kafka,离线数仓需要用Flume采集Kafka中的数据到HDFS中。 在实际项目中,我们不可能一直在Xshell中启动Flume任务,一是因为项目的Flume任务很多,二是一旦Xshell页面关闭Flume任务就会停止,这样非常不方便,因此必须在后台…

记一次new ArrayList导致的cpu飙升问题排查

参考:https://mp.weixin.qq.com/s/8JDPOAvmKYP8JZxau45hdw前言当时场景正常的jvm监控曲线图产生问题的jvm监控曲线图具体分析结束语昨天线上容器突然cpu飙升,也是第一次排查这种问题所以记录一下~ 前言 首先问题是这样的,周五正在写文档,突然收到了线上报警,发现cpu占用达到…

RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?

前言: 从初代开源消息队列崛起,到 PC 互联网、移动互联网爆发式发展,再到如今 IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头。 目前,消息中间件在国内许多行业的关键应用中扮演着至关重要的角色。随着数字化转型的深入,客户在使用消息…

Docker(十七)-修改Docker容器启动配置参数

有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动,现在要添加该参数怎么办呢,方法有二: 1、Docker 命令修改 docker container update --restart=always 容器名字 2、直接改配置文件 首先停止容器,不然无法修改配置文件 配置文件…

CSAPP Lab-3 ATTACKLAB

书接上回,这次做到了第三个 Lab 啦。 任务描述 这一个 Lab 的任务就更有意思了,实验给了我们两个程序,每个程序都会让我们输入一行字符串,而它们是通过下面这个函数来读取的: unsigned getbuf() {char buf[BUFFER_SIZE];Gets(buf);return 1; }其中,Gets 函数和 C 库的 ge…