Android编程操作嵌入式关系型SQLite数据库实例详解
什么是SQLite数据库
SQLite是一种轻型的关系型数据库。与其他数据库不同,SQLite是嵌入式的数据库,它不需要独立的服务器进程或配置,而直接读取或写入普通文件。这使得SQLite非常适用于需要轻量级、快速、可靠的数据存储和检索的场景,包括Android应用。
在Android中使用SQLite数据库
Android提供了一个SqliteOpenHelper类,该类封装了SQLite数据库文件的创建和升级,以及查询数据库的方法,使得直接在Android应用中使用SQLite数据库变得容易。
创建一个SQLite数据库
首先要创建一个继承自SqliteOpenHelper类的Java类,并实现它的onCreate()和onUpgrade()方法。在onCreate()方法中,你可以定义数据库表,如下面的示例:
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "mydatabase.db";
public static final int DB_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS person");
onCreate(db);
}
}
在上面的示例中,我们定义了一个名为person的表,该表包含三个字段:_id、name和age。
插入数据
要向数据库中插入数据,需要获取可写的SQLiteDataBase对象。通过ContentValues对象封装数据,然后调用insert()方法即可。示例代码如下:
SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "张三");
values.put("age", 18);
db.insert("person", null, values);
在上面的示例中,我们向person表插入了一条记录,其中name为“张三”,age为18。
查询数据
要查询数据库中的数据,需要获取可读的SQLiteDataBase对象,在调用query()方法进行查询。示例代码如下:
SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query("person", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
} while (cursor.moveToNext());
}
cursor.close();
在上面的示例中,我们查询了person表中的所有数据,并将_id、name和age分别赋值给了变量id、name和age。
示例说明
下面通过两个简单的示例来演示在Android中操作SQLite数据库的过程:
示例1:创建学生表,插入数据
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "mydatabase.db";
public static final int DB_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS student (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"number TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS student");
onCreate(db);
}
}
在MainActivity的onCreate方法中实例化MyDatabaseHelper对象,并向student表中插入一条学生记录,代码如下:
@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("name", "张三");
values.put("number", "1001");
db.insert("student", null, values);
}
示例2:查询学生表,并将结果显示到ListView中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("student", null, null, null, null, null, null);
List<String> list = new ArrayList<>();
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
String result = "姓名:" + name + " 学号:" + number;
list.add(result);
} while (cursor.moveToNext());
}
cursor.close();
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, list);
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
在上面的示例中,我们调用query()方法查询student表,并将结果存储在List
以上就是在Android应用中操作SQLite数据库的完整攻略了,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android编程操作嵌入式关系型SQLite数据库实例详解 - Python技术站