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

posted @ 2024-04-25 00:33  *太¥^白%  阅读(24)  评论(0编辑  收藏  举报