如何在Android中实现两个类之间的数据库传递? (安卓两个类间传递数据库)

在Android开发中,不同的类中经常需要共享数据,而数据库则是数据存储的一种常见方式之一。因此,实现两个类之间的数据库传递是开发中不可避免的问题之一。本文将介绍如何在Android中实现两个类之间的数据库传递。

一、SQLite数据库

Android中常用的数据库是SQLite,它是一种轻量级的关系型数据库系统。SQLite自带在所有的Android设备中,无需任何额外的安装。在Android应用程序中使用SQLite,需要使用Android提供的SQLite API。

二、SQLiteOpenHelper类

SQLiteOpenHelper是Android提供的一个用于管理SQLite数据库的类。使用SQLiteOpenHelper可以完成数据库的创建、升级、降级等操作。

SQLiteOpenHelper包含两个抽象方法:onCreate()和onUpgrade()。onCreate()方法用于创建数据库,onUpgrade()方法用于升级数据库。在SQLiteOpenHelper的子类中,需要重写这两个方法。

三、数据模型类

为了将数据存储到SQLite数据库中,需要定义一个数据模型类。数据模型类通常包含数据表的所有列及其对应的数据类型。在数据模型类中,通常包含以下方法:构造方法、get方法和set方法。

四、实现类之间的数据库传递

在实现类之间的数据库传递时,需要完成以下几个步骤:

1、创建SQLiteOpenHelper的子类,并在子类中实现onCreate()和onUpgrade()方法。

2、创建数据模型类,并在数据模型类中实现保存、查询等操作。

3、在需要进行数据库传递的类中使用SQLiteOpenHelper获取数据库,并通过数据模型类完成数据的读取和保存。

具体实现步骤如下:

1. 创建SQLiteOpenHelper子类

在Android项目中,创建一个“DatabaseHelper”类,继承SQLiteOpenHelper。在子类中重写onCreate()和onUpgrade()方法。onCreate()方法中创建数据表,onUpgrade()方法中升级或降级数据库版本。

public class DatabaseHelper extends SQLiteOpenHelper {

private static final String DB_NAME = “my_db”;

private static final int DB_VERSION = 1;

public DatabaseHelper(Context context) {

super(context, DB_NAME, null, DB_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

String CREATE_TABLE_QUERY = “CREATE TABLE ” +

“person” +

” (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)”;

db.execSQL(CREATE_TABLE_QUERY);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

if(oldVersion

db.execSQL(“DROP TABLE IF EXISTS person”);

onCreate(db);

}

}

}

2. 创建数据模型类

在Android项目中,创建一个“Person”类,实现数据表中所有的列,以及get方法和set方法。

public class Person {

private int id;

private String name;

private int age;

public Person() {}

public Person(int id, String name, int age) {

this.id = id;

this.name = name;

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

在Person类中,还需要实现保存、查询等方法。如下所示:

public void save(Context context) {

SQLiteDatabase db = new DatabaseHelper(context).getWritableDatabase();

ContentValues cv = new ContentValues();

cv.put(“name”, name);

cv.put(“age”, age);

db.insert(“person”, null, cv);

db.close();

}

public static ArrayList getAll(Context context) {

ArrayList list = new ArrayList();

SQLiteDatabase db = new DatabaseHelper(context).getReadableDatabase();

Cursor cursor = db.rawQuery(“SELECT * FROM person”, null);

if(cursor != null && cursor.getCount() > 0) {

while(cursor.moveToNext()) {

int id = cursor.getInt(cursor.getColumnIndex(“id”));

String name = cursor.getString(cursor.getColumnIndex(“name”));

int age = cursor.getInt(cursor.getColumnIndex(“age”));

list.add(new Person(id, name, age));

}

}

if(cursor != null) {

cursor.close();

}

db.close();

return list;

}

public static void delete(Context context, int id) {

SQLiteDatabase db = new DatabaseHelper(context).getWritableDatabase();

db.delete(“person”, “id=?”, new String[]{String.valueOf(id)});

db.close();

}

3. 在需要进行数据库传递的类中使用SQLiteOpenHelper获取数据库

在需要进行数据库传递的类中,使用DatabaseHelper获取数据库,并通过Person类进行数据的读取和保存。

如下所示,MnActivity中展示了数据库中所有的Person数据,另一个类中通过Person类保存了一个Person对象。

public class MnActivity extends AppCompatActivity {

private ListView listView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_mn);

listView = findViewById(R.id.list_view);

ArrayList list = Person.getAll(this);

listView.setAdapter(new ArrayAdapter(this, R.layout.list_item, list));

}

}

public class OtherActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_other);

Person person = new Person();

person.setName(“Tom”);

person.setAge(18);

person.save(this);

}

}

五、


数据运维技术 » 如何在Android中实现两个类之间的数据库传递? (安卓两个类间传递数据库)