四月二十五日 Android studio关于使用sqlite数据库
昨天早上六点就起来要去排队考科目一,实在是困得很,昨天晚上早早就睡了,其实解释为什么昨天没有博客。
一个好消息就是我顺利的考过了,刚到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)"; //创建第二个表login public 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数据库创建成功时调用 @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(CREATE_USER); Toast.makeText(mContext, "数据库首次创建成功!", Toast.LENGTH_SHORT).show(); } //数据库升级时自动调用 @Override public 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连接繁琐问题了,又被这个拿住。