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

在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持久化库来简化数据库操作。

相关推荐
文青小兵12 小时前
云计算Linux——数据库MySQL读写分离、数据库备份、恢复(十八)
linux·运维·服务器·数据库·mysql·云计算
Kapaseker12 小时前
为什么 Java 的数组需要 new 出来
android·java·kotlin
@我漫长的孤独流浪12 小时前
SQL触发器实战:银行系统数据完整性控制
数据库·oracle
半夜修仙12 小时前
Redis中Set数据类型的常见命令
java·数据库·redis·笔记·学习
黄林晴12 小时前
颠覆开发!Google AI Studio 一句话生成原生 Android App
android·google io
oradh13 小时前
Oracle逻辑存储结构概述
数据库·oracle·逻辑存储结构·oracle逻辑存储结构概述
廿一夏13 小时前
MySql视图触发器函数存储过程
数据库·sql·oracle
恋猫de小郭13 小时前
Flutter 3.44 发布啦,超级大版本更新!!!
android·flutter·ios
hikktn13 小时前
Oracle 行锁 ORA-00054 高效重试机制实战:MERGE 批量更新 + FOR UPDATE NOWAIT 完整方案
数据库·oracle
￰meteor13 小时前
【数据库导学】
数据库