阿里云国际站注册教程:安卓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

相关推荐

  • 阿里云商标靠谱吗

    阿里云商标是阿里巴巴集团旗下的品牌,是中国领先的云计算服务提供商。作为全球顶级云计算品牌之一,阿里云在技术实力、服务质量和数据安全等方面都具有较高的信誉和口碑。 阿里云商标的靠谱性可以从以下几个方面来考量: 品牌实力:阿里巴巴集团是中国领先的互联网公司之一,旗下拥有多个知名品牌,如淘宝、天猫等,具有较高的知名度和影响力。 技术实力:阿里云拥有全球领先的云计算…

    2023年10月7日
    6200
  • 怎么配置阿里云服务器的端口号

    阿里云服务器怎么设置8080端口 是服务器上开的某个服务换到8080端口还是阿里云安全组开放8080端口?前者的话建议你搜索对应软件名字+改到8080端口看看别人是怎么改的。后者的话可以进入阿里云官网-控制台-云服务器-安全组-找到对应服务器包含的安全组-配置-公网出方向+公网入方向 那里按照提示设置。 阿里云域名解析怎么加端口 A记录只能到IP,到不了端口…

    2023年8月26日
    5500
  • 大学生购买阿里云服务器

    大学生可以通过以下方式购买阿里云服务器: 打开阿里云官方网站(https://www.aliyun.com/),注册一个阿里云账号。 登录阿里云账号后,在网站上找到“产品”或者“云服务器ECS”选项,点击进入。 在云服务器ECS页面,选择服务器的地域和可用区,并根据自己的需求选择合适的规格和配置。 添加服务器到购物车后,点击结算并选择支付方式,如支付宝、信用…

    2023年9月16日
    6800
  • 济南阿里云创新中心专场

    问一下长春那个阿里创新中心是真的么?给提供实训机会么?希望去过的给个客观点的评价,谢谢! 阿里云创新中心(长春净月)阿里云创新中心(长春净月)基地是知推动各类创新要素融合互动,促进长春市内双创服务信息化蓬勃兴起的平台吉林省长春市净月高新技术产业开发区南环城路与和融路交叉口道南150米证大立方大厦1幢8层面积:8120平方米场地:云创车厢洽谈区、产品展示区、云…

    2023年8月27日
    4700
  • 沭阳阿里云企业邮箱代理商:阿里邮箱撤回邮件会提示吗

    沭阳阿里云企业邮箱代理商:阿里邮箱撤回邮件会提示吗 优势介绍 阿里云企业邮箱作为一款强大的企业通信工具,具有许多优势和好用之处。 稳定可靠 阿里云企业邮箱基于阿里集团的庞大技术体系,拥有稳定、可靠的服务器和网络架构,保障用户在使用过程中不会出现频繁的崩溃和故障。 安全保密 阿里云企业邮箱对用户的邮件数据进行严格的加密处理,可以有效防止邮件被非法获取和篡改。同…

    2024年1月20日
    6100

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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