阿里云国际站注册教程:安卓sqlite数据库实验报告

实验目的

  1. 了解SQLite数据库的使用方法。
  2. 熟练掌握 SQLiteOpenHelper 的使用方法。
  3. 实现一个简单的安卓 SQLite 数据库程序。

实验环境

  • Android Studio
  • Android 真机或模拟器

实验步骤

  1. 新建一个 Android 项目,取名为 SQLiteDemo。
  2. 在 AndroidManifest.xml 中添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

这些权限用于访问文件系统,进行数据库的读写操作。

  1. 在 app/build.gradle 文件中添加以下依赖:
dependencies {
    // SQLite 数据库
    implementation 'androidx.sqlite:sqlite:2.1.0'
}
  1. 在 MainActivity.java 文件中创建一个名为 MyDatabaseHelper 的内部类,继承自 SQLiteOpenHelper,并重写其 onCrate() 方法。代码如下:
public class MainActivity extends AppCompatActivity {

    public static final String DB_NAME="BookStore.db";

    private SQLiteDatabase db;

    private Button createDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createDatabase = findViewById(R.id.create_database);
        createDatabase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyDatabaseHelper dbHelper = new MyDatabaseHelper(MainActivity.this, DB_NAME, null, 1);
                db = dbHelper.getWritableDatabase();
            }
        });

    }

    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 MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_BOOK);
            Toast.makeText(MainActivity.this, "Create succeeded", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("drop table if exists Book");
            onCreate(db);
        }

    }

}

这个类主要实现了 SQLiteOpenHelper 类,用于创建一个名为 Book 的表格。其中 onCreate() 方法用于创建表格,onUpgrade() 方法用于更新表格。同时,在 MainActivity 的 onCreate() 方法中,设置了一个创建数据库的按钮,并为其设置了点击事件,点击后调用 MyDatabaseHelper 的 getWritableDatabase() 方法来获取一个可写的数据库对象。

  1. 在 activity_main.xml 中添加一个按钮视图,如下所示:
<Button
    android:id="@+id/create_database"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:text="Create Database"
    android:textSize="20sp" />
  1. 运行程序,点击 Create Database 按钮,程序会在 /data/data/包名/databases/ 目录下创建一个 BookStore.db 的数据库文件。在命令行中执行以下命令,可以查看该数据库中的表:
$ adb -s <device id> shell
$ cd /data/data/包名/databases/
$ sqlite3 BookStore.db
sqlite> .table
Book

至此,安卓 SQLite 数据库的实验完成。

一、实验目的

1.了解SQLite数据库的基本概念和使用方法。

2.能够使用SQLite数据库进行数据存储和基本的CRUD操作。

3.掌握SQLite数据库的特点和使用场景。

二、实验内容

1.SQLite数据库的基本概念介绍

SQLite是一种轻量级的关系型数据库管理系统,它被广泛用于嵌入式系统和移动设备中。SQLite使用SQL语言进行操作,但与大部分数据库不同的是,它没有独立的服务进程,而是直接使用应用程序的内存,因此也不需要独立的部署和维护。

2.安装SQLite数据库

SQLite不需要安装,只需要引入相应的库即可使用。在Android中,我们需要使用SQLiteOpenHelper类进行数据库的创建和升级。

3.使用SQLite数据库进行数据存储和基本的CRUD操作

在Android中,SQLite数据库存储在/data/data/应用包名/databases/目录下,我们可以通过SQLiteOpenHelper类进行数据库的创建和升级。CRUD操作指的是:

C:create,即插入数据。

R:retrieve,即查询数据。

U:update,即更新数据。

D:delete,即删除数据。

4.SQLite数据库的特点和使用场景

SQLite的特点主要有:

(1)轻量级、快速、易用。

(2)嵌入式架构,不需要独立的服务进程,省去了服务器的维护管理和开销。

(3)支持大部分标准SQL语法,具有较高的兼容性。

(4)可靠性高,支持事务和数据的完整性,能够确保数据的正确性。

(5)跨平台,适用于各种操作系统和开发语言。

SQLite的使用场景主要有:

(1)嵌入式系统、移动设备等资源受限环境中的数据存储和管理。

(2)小型应用程序的数据管理,如日志、配置等。

(3)单机应用程序的数据管理,如桌面应用程序、游戏等。

三、实验步骤

1.创建一个新的Android项目,命名为SQLiteDemo。

2.在build.gradle文件中引入SQLite依赖库:

dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
//引入SQLite依赖库
implementation 'androidx.sqlite:sqlite:2.1.0'

}

3.创建一个继承自SQLiteOpenHelper的数据库帮助类:

public class DBHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "my.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "user";

public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE " + TABLE_NAME + " (" +
            "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
            "name TEXT NOT NULL," +
            "age INTEGER NOT NULL," +
            "sex INTEGER NOT NULL)";
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

}

4.创建一个MainActivity,并在onCreate方法中创建一个数据库实例:

public class MainActivity extends AppCompatActivity {

private SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DBHelper dbHelper = new DBHelper(this);
    db = dbHelper.getWritableDatabase();
}

}

5.实现数据的CRUD操作:

//插入数据
private void insertData() {

阿里云国际站注册教程:安卓sqlite数据库实验报告
ContentValues values = new ContentValues();
values.put("name", "张三");
values.put("age", 18);
values.put("sex", 0);
db.insert("user", null, values);

}

//查询数据
private void queryData() {

Cursor cursor = db.query("user", null, null, null, null, null, null);
while (cursor.moveToNext()) {
    String name = cursor.getString(cursor.getColumnIndex("name"));
    int age = cursor.getInt(cursor.getColumnIndex("age"));
    int sex = cursor.getInt(cursor.getColumnIndex("sex"));
    Log.d("MainActivity", "name=" + name + ", age=" + age + ", sex=" + sex);
}
cursor.close();

}

//更新数据
private void updateData() {

ContentValues values = new ContentValues();
values.put("age", 20);
db.update("user", values, "name=?", new String[]{"张三"});

}

//删除数据
private void deleteData() {

db.delete("user", "name=?", new String[]{"张三"});

}

6.在界面上增加四个按钮,分别调用四个操作方法:

<Button

android:id="@+id/btn_insert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="插入数据"
android:onClick="onClickInsert"/>

<Button

android:id="@+id/btn_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据"
android:onClick="onClickQuery"/>

<Button

android:id="@+id/btn_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新数据"
android:onClick="onClickUpdate"/>

<Button

android:id="@+id/btn_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除数据"
android:onClick="onClickDelete"/>

7.实现按钮对应的操作方法:

public void onClickInsert(View view) {

insertData();

}

public void onClickQuery(View view) {

queryData();

}

public void onClickUpdate(View view) {

updateData();

}

public void onClickDelete(View view) {

deleteData();

}

8.运行程序,点击按钮进行数据的操作。

四、实验总结

通过本次实验,我了解了SQLite数据库的基本概念、使用方法和特点,掌握了SQLiteOpenHelper的使用和CRUD操作的实现方法,同时也学会了如何引入SQLite依赖库。SQLite具有轻量级、快速、易用、可靠性高、兼容性好、跨平台等特点,适用于嵌入式系统、移动设备和小型应用程序的数据存储和管理。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/158996.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月10日 06:03
下一篇 2024年3月10日 06:19

相关推荐

  • 阿里云企业邮箱:阿里云怎样实现邮件智能提醒?

    阿里云企业邮箱:智能邮件提醒如何重塑企业沟通效率 一、邮件智能提醒:现代企业的沟通刚需 在快节奏的商业环境中,重要邮件被淹没在收件箱可能导致商机流失或响应延迟。阿里云企业邮箱的智能提醒功能通过AI算法主动识别高优先级邮件(如客户询盘、紧急任务、会议邀约),并实时推送至用户手机、钉钉或微信,确保关键信息不被遗漏。测试数据显示,该功能使企业平均邮件响应速度提升4…

    2025年6月23日
    30800
  • 珠海阿里云代理商:阿里云waf

    阿里云WAF(Web应用防火墙)是阿里云的一项云安全服务,旨在保护用户的Web应用免受各种网络攻击,例如SQL注入、XSS跨站脚本攻击等。 作为珠海地区的阿里云代理商,我们可以为您提供阿里云WAF的相关服务。具体包括: 产品介绍:我们可以向您介绍阿里云WAF的功能特点,包括实时监控、威胁情报、安全事件响应等方面。 解决方案设计:根据您的实际需求,我们可以为您…

    2024年1月16日
    39400
  • 阿里云计算acp认证报名

    敏捷PMIACP考试报名条件和考试费用多少钱 PMI-ACP敏捷认证的报名条件:培训机构颁发的21个PDU证明;一年的项目管理经验;8个月的敏捷团队参与经验;PMI-ACP敏捷认证的考试费用是3300元。 我想知道阿里云ACA考试 是通过什么方式的? 问答还是选择,还是什么形式 你好!阿里云服务器最重要的是其多年的稳定性,以及与其配套的各种资源,比如开放式数…

    2023年8月28日
    43300
  • 上海阿里云代理商:asp.net 定时访问数据库

    在asp.net中,你可以使用一些定时任务管理器,比如Quartz.NET,来定时访问数据库。这是一个流行的企业级调度库,可以用于创建简单到复杂的定时任务。 以下是一个简单的示例步骤: 安装Quartz.NET。可以通过NuGet包管理器来安装,只需在NuGet包管理器控制台运行以下命令: Install-Package Quartz 创建并设置Job和Tr…

    2024年3月13日
    38200
  • 与阿里云智能集团关联的上市公司

    与阿里云智能集团关联的上市公司主要有以下几家: 阿里巴巴集团:阿里云智能是阿里巴巴集团旗下的子公司,是其旗下云计算业务的主体。阿里巴巴集团于2014年在美国纳斯达克交易所上市,股票代码为BABA。 新华三集团:新华三集团是阿里云智能的合作伙伴之一,主要提供网络设备和解决方案。新华三集团于2001年在上海证券交易所上市,股票代码为600703。 菜鸟网络:菜鸟…

    2023年8月18日
    48000

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/