如何在Android中创建SQLite数据库?

在Android中创建SQLite数据库,首先需要继承SQLiteOpenHelper类,然后重写其onCreate方法来创建表和定义结构。

Android 创建 SQLite 数据库

如何在Android中创建SQLite数据库?

SQLite 是一个轻量级的关系型数据库管理系统,广泛用于移动应用开发中,Android 提供了对 SQLite 的支持,通过SQLiteOpenHelper 类可以方便地管理数据库的创建和版本控制,本文将详细介绍如何在 Android 项目中创建和使用 SQLite 数据库。

1. 准备工作

确保您已经在您的 Android Studio 项目中配置了必要的环境和依赖项,如果您还没有创建 Android 项目,请先创建一个新项目。

1 添加依赖项

在项目的build.gradle 文件中,确保包含以下内容:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
}

2 配置权限

AndroidManifest.xml 中添加读写存储权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2. 创建 SQLiteOpenHelper 子类

如何在Android中创建SQLite数据库?

SQLiteOpenHelper 是一个帮助类,用于管理数据库的创建和版本管理,我们需要继承这个类并实现其方法。

1 定义数据库结构

定义一个类来表示我们的数据库表,我们创建一个用户表User

public class User {
    public static final String TABLE_NAME = "user";
    public static final String COLUMN_ID = "id";
    public static final String COLUMN_NAME = "name";
    public static final String COLUMN_EMAIL = "email";
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", email='" + email + ''' +
                '}';
    }
}

2.2 创建 SQLiteOpenHelper 子类

创建一个继承自SQLiteOpenHelper 的类,并在其中实现数据库的创建和升级逻辑:

public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    public MyDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + User.TABLE_NAME + " (" +
                User.COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                User.COLUMN_NAME + " TEXT, " +
                User.COLUMN_EMAIL + " TEXT" +
                ")";
        db.execSQL(createTable);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, newVersion) {
        // 在这里处理数据库升级逻辑,例如删除旧表并创建新表
        db.execSQL("DROP TABLE IF EXISTS " + User.TABLE_NAME);
        onCreate(db);
    }
}

3. 操作数据库

为了操作数据库,我们需要实例化MyDatabaseHelper 并使用它来获取可写的数据库对象,然后我们可以执行 SQL 查询或使用 ContentValues 进行插入、更新和删除操作。

如何在Android中创建SQLite数据库?

1 插入数据

MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(User.COLUMN_NAME, "John Doe");
values.put(User.COLUMN_EMAIL, "john.doe@example.com");
long newRowId = db.insert(User.TABLE_NAME, null, values);

2 查询数据

Cursor cursor = db.query(
        User.TABLE_NAME,   // The table to query
        null,              // Return all rows
        null,              // Don't use a where clause
        null,              // No selection arguments
        null,              // The columns to return (all columns)
        null,              // The sort order (none)
        null               // Limit the number of results (none)
);
while (cursor.moveToNext()) {
    long id = cursor.getLong(cursor.getColumnIndexOrThrow(User.COLUMN_ID));
    String name = cursor.getString(cursor.getColumnIndexOrThrow(User.COLUMN_NAME));
    String email = cursor.getString(cursor.getColumnIndexOrThrow(User.COLUMN_EMAIL));
    Log.d("User", "ID: " + id + ", Name: " + name + ", Email: " + email);
}
cursor.close();

3 更新数据

ContentValues values = new ContentValues();
values.put(User.COLUMN_EMAIL, "new.email@example.com");
int rowsUpdated = db.update(User.TABLE_NAME, values, User.COLUMN_ID + " = ?", new String[]{String.valueOf(userId)});

4 删除数据

int rowsDeleted = db.delete(User.TABLE_NAME, User.COLUMN_ID + " = ?", new String[]{String.valueOf(userId)});

4. 完整示例代码

以下是一个完整的示例,展示了如何在 Android 应用中创建和使用 SQLite 数据库:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        // 插入数据
        ContentValues values = new ContentValues();
        values.put(User.COLUMN_NAME, "John Doe");
        values.put(User.COLUMN_EMAIL, "john.doe@example.com");
        db.insert(User.TABLE_NAME, values);
        // 查询数据
        Cursor cursor = db.query(User.TABLE_NAME, null, null, null, null, null, null);
        while (cursor.moveToNext()) {
            long id = cursor.getLong(cursor.getColumnIndexOrThrow(User.COLUMN_ID));
            String name = cursor.getString(cursor.getColumnIndexOrThrow(User.COLUMN_NAME));
            String email = cursor.getString(cursor.getColumnIndexOrThrow(User.COLUMN_EMAIL));
            Log.d("User", "ID: " + id + ", Name: " + name + ", Email: " + email);
        }
        cursor.close();
    }
}

5. 归纳

本文介绍了如何在 Android 应用中使用 SQLite 数据库,包括创建数据库、定义表结构、插入数据、查询数据、更新数据和删除数据的基本操作,通过继承SQLiteOpenHelper 类,我们可以方便地管理数据库的版本控制和升级逻辑,希望本文对您有所帮助,祝您在 Android 开发中取得成功!

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1266515.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-11-06 05:55
下一篇 2024-11-06 05:59

相关推荐

  • 如何在Android中实现创建或升级数据库时执行自定义SQL语句?

    在Android中,创建或升级数据库时可以使用SQLiteOpenHelper类。通过重写其onCreate()和onUpgrade()方法来执行SQL语句。,,“java,public class MyDatabaseHelper extends SQLiteOpenHelper {, private static final String DATABASE_NAME = “mydatabase.db”;, private static final int DATABASE_VERSION = 1;,, public MyDatabaseHelper(Context context) {, super(context, DATABASE_NAME, null, DATABASE_VERSION);, },, @Override, public void onCreate(SQLiteDatabase db) {, db.execSQL(“CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT)”);, },, @Override, public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {, db.execSQL(“DROP TABLE IF EXISTS mytable”);, onCreate(db);, },},“

    2024-11-09
    07

发表回复

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

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入