使用SQLite数据库是Android应用中常见的数据存储方法,适用于需要存储大量结构化数据的场景。下面是如何在Android应用中使用SQLite数据库的基本步骤:

步骤 1: 创建 SQLiteOpenHelper 类

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

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "example.db";
    private static final int DATABASE_VERSION = 1;

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表
        db.execSQL(
            "CREATE TABLE IF NOT EXISTS contacts (" +
            "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
            "name TEXT, " +
            "phone TEXT, " +
            "email TEXT)"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 在这里处理数据库的版本更新
        if (oldVersion < 2) {
            // db.execSQL("ALTER TABLE contacts ADD COLUMN new_column TEXT");
        }
    }
}

步骤 2: 使用数据库

你可以在Activity或其他组件中实例化你的 DatabaseHelper 并使用它来执行数据库操作。

public class MainActivity extends AppCompatActivity {

    private DatabaseHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dbHelper = new DatabaseHelper(this);
        insertContact("John Doe", "123456789", "john@example.com");
        queryContacts();
    }

    private void insertContact(String name, String phone, String email) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("phone", phone);
        values.put("email", email);
        db.insert("contacts", null, values);
    }

    private void queryContacts() {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = db.query("contacts", new String[] {"id", "name", "phone", "email"}, null, null, null, null, null);
        
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String phone = cursor.getString(cursor.getColumnIndex("phone"));
            String email = cursor.getString(cursor.getColumnIndex("email"));
            // 使用数据
            Log.d("Database", "Contact: " + id + ", " + name + ", " + phone + ", " + email);
        }
        cursor.close();
    }
}

步骤 3: 管理数据库连接

确保在不需要时关闭数据库连接。你可以在Activity的 onDestroy() 方法中关闭数据库帮助器。

@Override
protected void onDestroy() {
    dbHelper.close();
    super.onDestroy();
}

注意事项

  • 线程安全:数据库操作可能是耗时的,应避免在主线程上执行复杂的查询或长时间的数据库操作。考虑使用 AsyncTask 或者 Loader 来在后台线程处理数据库操作。
  • 数据迁移:当应用升级并且数据库结构发生变化时,需要在 onUpgrade() 方法中处理数据迁移。
  • 安全性:确保对输入进行验证。