实验目的
- 了解SQLite数据库的使用方法。
- 熟练掌握 SQLiteOpenHelper 的使用方法。
- 实现一个简单的安卓 SQLite 数据库程序。
实验环境
- Android Studio
- Android 真机或模拟器
实验步骤
- 新建一个 Android 项目,取名为 SQLiteDemo。
- 在 AndroidManifest.xml 中添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
这些权限用于访问文件系统,进行数据库的读写操作。
- 在 app/build.gradle 文件中添加以下依赖:
dependencies {
// SQLite 数据库
implementation 'androidx.sqlite:sqlite:2.1.0'
}
- 在 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() 方法来获取一个可写的数据库对象。
- 在 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" />
- 运行程序,点击 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() {
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