在Android开发中,动态添加数据库可以使用SQLiteOpenHelper类。首先,在项目中创建一个SQLiteOpenHelper类的子类,然后在其构造函数中调用父类的构造函数,并指定数据库名称、版本号、以及需要创建的表的列名和数据类型等信息。接着实现onCreate方法,在其中执行创建表的语句,然后实现onUpgrade方法,在其中执行更新表的语句。
下面是一个简单的实现示例:
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "MyDB";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "Person";
private static final String COLUMN_ID = "ID";
private static final String COLUMN_NAME = "Name";
private static final String COLUMN_AGE = "Age";
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTableSQL = "CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_NAME + " TEXT, " +
COLUMN_AGE + " INTEGER);";
db.execSQL(createTableSQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String upgradeTableSQL = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(upgradeTableSQL);
onCreate(db);
}
public void addPerson(String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, name);
values.put(COLUMN_AGE, age);
db.insert(TABLE_NAME, null, values);
db.close();
}
public List<Person> getAllPersons() {
List<Person> persons = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex(COLUMN_ID));
String name = cursor.getString(cursor.getColumnIndex(COLUMN_NAME));
int age = cursor.getInt(cursor.getColumnIndex(COLUMN_AGE));
Person person = new Person(id, name, age);
persons.add(person);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return persons;
}
}
在上述示例中,首先定义了数据库名称、版本号,以及表名和列名等信息。然后在构造函数中调用父类的构造函数,指定需要创建的表的信息。在onCreate方法中,执行创建表的语句。在onUpgrade方法中,执行更新表的语句。最后,提供了添加和查询数据的方法。在添加数据时,先获取可写的数据库对象,并创建ContentValues对象,将要插入的数据存储到ContentValues中,再调用insert方法将数据加入到表中。在查询数据时,先获取可读的数据库对象,并执行查询语句,遍历Cursor对象,将每一行数据取出并封装成Person对象,最后返回Person列表。
调用示例:
DBHelper dbHelper = new DBHelper(context);
dbHelper.addPerson("Tom", 20);
List<Person> persons = dbHelper.getAllPersons();
for (Person person: persons) {
Log.d("Person Info", "ID: " + person.getId() + " Name: " + person.getName() + " Age: " + person.getAge());
}
动态添加数据库是指在Android应用程序运行过程中,通过代码创建一个新的数据库。实现动态添加数据库需要以下几个步骤:
1.确定数据表结构
首先需要确定新建数据库的结构,包括数据库名称、数据表名称、表中包含的字段以及数据类型等。可借助第三方数据库设计工具设计数据库表结构。
2.创建数据库
通过编写Java类来创建一个SQLite数据库,可以使用以下代码实现:
public class DBHelper extends SQLiteOpenHelper {
private SQLiteDatabase db;
private Context mContext;
public static final String CREATE_TABLE = "CREATE TABLE Test ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "name TEXT, "
+ "age INTEGER )";
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_TABLE);
Toast.makeText(mContext, "Database created successfully", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS Test");
onCreate(sqLiteDatabase);
}
public void openDatabase(){
db = getWritableDatabase();
}
public void closeDatabase(){
if(db!=null){
db.close();
}
}
}
3.添加数据
通过以下代码向新建的数据库中添加数据:
DBHelper dbHelper = new DBHelper(this, "test.db", null, 1);
dbHelper.openDatabase();
ContentValues values = new ContentValues();
values.put("name", "Tom");
values.put("age", "20");
dbHelper.getReadableDatabase().insert("Test", null, values);
dbHelper.closeDatabase();
4.查询数据
可以使用以下代码查询数据库中的数据:
DBHelper dbHelper = new DBHelper(this, "test.db", null, 1);
dbHelper.openDatabase();
Cursor cursor = dbHelper.getReadableDatabase().query("Test", null, null, null, null, null, null);
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.i("DBHelper", "name="+name+", age="+age);
}
cursor.close();
dbHelper.closeDatabase();
以上就是动态添加数据库的实现方法,可以根据实际需求灵活应用。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/159511.html