四月二十五日 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连接繁琐问题了,又被这个拿住。
浙公网安备 33010602011771号