如何在Android中实现SQLite数据库操作

news/2025/3/27 11:24:18/

在Android中实现SQLite数据库操作通常涉及以下几个步骤:创建数据库助手类、定义数据库表结构、执行SQL查询和更新操作等。以下是一个基本的实现指南:

1. 添加依赖

在Android项目中,SQLite是内置支持的,因此不需要额外添加依赖。如果你使用的是较新的Android架构组件,可以考虑使用Room持久化库,它是对SQLite的一个抽象层,但这里我们直接使用SQLite。

2. 创建数据库助手类

首先,你需要创建一个继承自SQLiteOpenHelper的类。这个类将帮助你管理数据库的创建和版本管理。

 

java复制代码

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "MyDatabase.db";
// Table Name
private static final String TABLE_NAME = "user_table";
// Table Columns
private static final String COL1 = "ID";
private static final String COL2 = "NAME";
private static final String COL3 = "EMAIL";
// Create Table SQL Statement
private static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " (" +
COL1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL2 + " TEXT, " +
COL3 + " TEXT);";
// Constructor
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// onCreate: This method is called when the database is created for the first time.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
// onUpgrade: This method is called when the database needs to be upgraded.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}

3. 插入数据

你可以通过创建一个新的方法,在MyDatabaseHelper类或者在Activity/Fragment中调用数据库助手类的方法来插入数据。

 

java复制代码

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
// 插入数据的方法
public long insertData(String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, name);
contentValues.put(COL3, email);
long result = db.insert(TABLE_NAME, null, contentValues);
// 如果插入成功,返回新行的ID,否则返回-1
if (result == -1) {
Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Success", Toast.LENGTH_SHORT).show();
}
return result;
}

4. 查询数据

同样地,你可以创建一个方法来查询数据。

 

java复制代码

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.List;
// User类,用于存储用户数据
public class User {
private int id;
private String name;
private String email;
// Getters and Setters
// ...
}
// 查询所有数据的方法
public List<User> getAllData() {
List<User> userList = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, new String[]{COL1, COL2, COL3}, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndexOrThrow(COL1));
String name = cursor.getString(cursor.getColumnIndexOrThrow(COL2));
String email = cursor.getString(cursor.getColumnIndexOrThrow(COL3));
User user = new User(id, name, email);
userList.add(user);
}
cursor.close();
return userList;
}

5. 更新和删除数据

类似地,你可以创建方法来更新和删除数据。

 

java复制代码

// 更新数据的方法
public int updateData(int id, String name, String email) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, name);
contentValues.put(COL3, email);
String selection = COL1 + " = ?";
String[] selectionArgs = { String.valueOf(id) };
int rowsUpdated = db.update(TABLE_NAME, contentValues, selection, selectionArgs);
return rowsUpdated;
}
// 删除数据的方法
public void deleteData(int id) {
SQLiteDatabase db = this.getWritableDatabase();
String selection = COL1 + " = ?";
String[] selectionArgs = { String.valueOf(id) };
db.delete(TABLE_NAME, selection, selectionArgs);
}

6. 使用数据库助手类

最后,在你的Activity或Fragment中实例化并使用这个数据库助手类。

 

java复制代码

public class MainActivity extends AppCompatActivity {
MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this);
// 插入数据
long newRowId = dbHelper.insertData("John Doe", "john.doe@example.com");
// 查询数据
List<User> users = dbHelper.getAllData();
// 更新数据
dbHelper.updateData((int) newRowId, "Jane Doe", "jane.doe@example.com");
// 删除数据
dbHelper.deleteData((int) newRowId);
}
}

通过以上步骤,你可以在Android应用中实现基本的SQLite数据库操作。对于更复杂的应用,可以考虑使用Room持久化库来简化数据库操作。


http://www.ppmy.cn/news/1578971.html

相关文章

OpenBMC:BmcWeb 读取http请求头

OpenBMC:BmcWeb connect读取http请求-CSDN博客 如果是http请求或者处理过握手后的https请求,那么接下来就要调用doReadHeaders 1.doReadHeaders void doReadHeaders() {BMCWEB_LOG_DEBUG("{} doReadHeaders", logPtr(this));if (!parser){BMCWEB_LOG_CRITICAL(&qu…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

学习网络安全需要哪些基础?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 学习网络安全&#xff0c;对于想要进入IT行业的朋友们来说是一件非常重要的事情。尤其是在当今社会&#xff0c;互联网已经渗透到工作和生活的方方面面&#xff0…

贪心算法--

1.柠檬水找零 link:860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法&#xff0c; 优先花出大面额bill&#xff0c; 尽可能保护小面额billint five 0, ten 0;// 不…

使用服务器搭建开源问答平台Answer

一、服务器环境准备 ‌实例与系统配置‌ ‌推荐配置‌&#xff1a;莱卡云 ‌L1型实例&#xff08;1核2GB内存&#xff09;‌&#xff0c;系统选择 ‌Ubuntu 22.04 LTS‌&#xff0c;确保Java和Docker兼容性‌13。‌端口开放‌&#xff1a;在莱卡云控制台开放 ‌HTTP&#xff0…

使用 Arduino 和 ESP8266 Wi-Fi 模块发送电子邮件

使用 Arduino Uno 和 ESP8266 Wi-Fi 模块发送电子邮件 我们正在迈向物联网 (IoT) 世界。这项技术在电子和嵌入式系统中起着非常重要的作用。从任何微控制器或嵌入式系统发送电子邮件都是非常基本的事情,这在 IoT 中是必需的。因此,在本文中,我们将学习“如何使用 Wi-Fi 和…

大理石平板精密量具和其他量具有什么不同?

大理石平板精密量具与其他量具&#xff08;如金属平板精密量具或塑料量具&#xff09;在材质和使用特点上有一些不同。 材质&#xff1a;大理石平板精密量具是用大理石材质制成的&#xff0c;具有很高的硬度和稳定性&#xff0c;不易受温度变化和湿度变化影响&#xff1b;而金属…

Deepseek 本地安装

1、安装 Download Ollama on macOS 2、ollama run deepseek-r1:7b 3、Ctrld 结束&#xff0c;重新执行 ollama run deepseek-r1:7b 即可快速运行&#xff0c;不用重新下载了 4、安装webui 安装chrome插件 Page Assist https://chromewebstore.google.com/detail/page-assist-a-…