SQLite数据库存储(创建数据库,升级数据库和增删改查四种基本操作)

本文详细介绍了在Android中如何使用SQLite数据库,包括创建数据库、升级数据库以及增删改查的基本操作。通过创建`MyDatabaseHelper`类,利用`SQLiteOpenHelper`的`onCreate()`和`onUpgrade()`方法来实现数据库的创建和升级。此外,还展示了如何使用Android提供的API进行数据的添加、更新、删除和查询,以及如何在事务中操作数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考书籍:第一行代码

我们Android系统是内置了数据库的,在SDK中的platform-tools文件夹中。

在这里插入图片描述
SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百k的内存就足够了,因此比较适合在移动设备上使用。

创建数据库

首先我们需要创建一个自己的帮助类,去继承于SQLiteOpenHelper这个帮助类。SQLiteOpenHelper中有两个抽象方法,一个是onCreate()方法,在这个方法中实现创建数据库的逻辑。一个是onUpgrade()方法,在这个方法中实现升级数据库的逻辑。

MyDatabaseHelper .java 类

public class MyDatabaseHelper  extends SQLiteOpenHelper {

 public static final String CREATE_BOOK = "create 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);
    mcontext = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_BOOK);
    Toast.makeText(mcontext,"创建成功",Toast.LENGTH_SHORT).show();
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
}
}

我们把创建数据库的SQL语句定义成一个常量,然后在onCreate()方法中去调用SQLiteDatabase的execSQL()方法中去执行这条创建表的语句,并弹出创建成功的语句。这样在创建数据库的同时也可以把表创建了。

SQLite的数据类型比较简单,我们这里简单讲一下,

integer  表示整型
real     表示浮点型
text     表示文本类型
blob     表示二进制类型

acticity_main.xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<Button
    android:id="@+id/create_database"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#F0FFFF"
    android:text="创建数据库"/>

</LinearLayout>

这里加了一个按钮,用于创建数据库。

MainActivity.java代码

public class MainActivity extends AppCompatActivity  {

private MyDatabaseHelper myDatabaseHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //帮助类对象
    myDatabaseHelper = new MyDatabaseHelper(this,"BookStore.db",null,1);

    Button createDatabase = findViewById(R.id.create_database);//添加创建数据库的按钮控件
   createDatabase.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          		myDatabaseHelper.getWritableDatabase();//创建数据库

        }
    });
    }
    }

这里在onCreate()方法中构建了一个MyDatabaseHelper对象,并且通过构造函数的参数,第一个参数是场景,第二个参数为数据库名(记得要加后缀.db,不然他会认为不是个SQLite数据库),第三个参数是游标,第四个参数是版本号(第一次创建就写1,用于升级)。
创建数据库提供了两种方法,一个是getReadableDatabase()方法getWritableDatabase()方法。这两个方法都可以创建或打开一个数据库(如果数据库已存在就直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。我这里用的是getWritableDatabase()。

然后你就可以去运行这个程序了。它存在在**/data/data/你的包名/databases/**目录下。但是表你无法通过它查看,我这里用的是SQLite Expert Professional查询。你把数据库文件保存到本地桌面上,然后将他拖进SQLite Expert Professional中,就可以查看到了,但是SQLite Expert Professional有一个不好的地方,你每次往数据库里添加了东西,都要重新导入SQLite Expert Professional中,他相当于一个离线的,不能同步刷新。
在这里插入图片描述
现在是什么数据都没有的,因为我们还没有往里面加数据。

SQLite Expert Professional下载网址:https://www.7down.com/soft/4072.html

升级数据库

MyDatabaseHelper .java 类

public class MyDatabaseHelper extends SQLiteOpenHelper {

public static final String CREATE_BOOK = "create table book("
        + "id integer primary key autoincrement,"
        + "author text,"
        + "price real,"
        + "pages integer,"
        + "name text)";
   

public static final String CREATE_CATEGORY = "create table Category("
        + "id integer primary key autoincrement,"
        + "category_name text,"
        + "category_code integer)";

private Context mcontext;

public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, name, factory, version);
    mcontext = context;
}


@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_BOOK);
    db.execSQL(CREATE_CATEGORY);
    Toast.makeText(mcontext,"创建成功",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);
}
}

这里我们新建了一个表Category,然后在onUpgrade

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值