Android 数据库查询
在 Android 开发中,SQLite 是一种常用的嵌入式关系型数据库,它轻量级、零配置,并且易于集成到应用程序中,本文将详细介绍如何在 Android 应用中使用 SQLite 进行数据库查询操作。
一、什么是 SQLite?
SQLite 是一种嵌入式数据库引擎,以库的形式嵌入到应用程序中,它不需要独立的服务器进程,数据存储在单个文件中,通常以 .db 或 .sqlite 为扩展名。
二、SQLiteOpenHelper 类
在使用 SQLite 之前,我们需要创建一个继承自SQLiteOpenHelper
的子类,这个类负责处理数据库的创建和版本管理。
public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.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) { // 创建数据库表 String createTableQuery = "CREATE TABLE myTable (id INTEGER PRIMARY KEY, name TEXT)"; db.execSQL(createTableQuery); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 当数据库版本发生变化时执行操作 if (oldVersion < 2) { db.execSQL("ALTER TABLE myTable ADD COLUMN age INTEGER"); } } }
三、运行查询
要在 Android 应用中运行查询,我们需要获取一个可写的 SQLite 数据库实例,并执行查询语句,以下是一些常见的查询示例:
1. 查询所有行
public class MainActivity extends AppCompatActivity { private SQLiteDatabase mDatabase; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseHelper dbHelper = new DatabaseHelper(this); mDatabase = dbHelper.getWritableDatabase(); // 例1:查询所有行 Cursor cursor = mDatabase.rawQuery("SELECT * FROM myTable", null); if (cursor.moveToFirst()) { do { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); Log.d("TAG", "ID: " + id + ", Name: " + name); } while (cursor.moveToNext()); } cursor.close(); } }
2. 查询特定条件的行
String[] columns = {"id", "name"}; String selection = "id=?"; String[] selectionArgs = {"1"}; Cursor cursor2 = mDatabase.query("myTable", columns, selection, selectionArgs, null, null, null); if (cursor2.moveToFirst()) { do { int id = cursor2.getInt(cursor2.getColumnIndex("id")); String name = cursor2.getString(cursor2.getColumnIndex("name")); Log.d("TAG", "ID: " + id + ", Name: " + name); } while (cursor2.moveToNext()); } cursor2.close();
四、使用 query() 方法进行查询
query()
方法提供了一种更加结构化的方式来进行查询,其参数如下:
table
:表名。
columns
:要查询出来的列名(字段),全部查询就写 null。
selection
:查询条件子句,相当于WHERE
语句中的条件部分。
selectionArgs
:查询条件对应的内容。
groupBy
:分组。
having
:作用于groupBy
的条件。
orderBy
:排序。
limit
:指定偏移量和获取的记录数。
// 查询全部数据示例 public List<PersonModel> queryAllPersonData(){ Cursor cursor = getWritableDatabase().query(TABLE_NAME_PERSON,null,null,null,null,null,null,null); List<PersonModel> list = new ArrayList<>(); if(cursor.getCount() > 0) { cursor.moveToFirst(); for (int i = 0; i < cursor.getCount(); i++) { int id = cursor.getInt(cursor.getColumnIndex(VALUE_ID)); String name = cursor.getString(cursor.getColumnIndex(VALUE_NAME)); int isBoy = cursor.getInt(cursor.getColumnIndex(VALUE_ISBOY)); int age = cursor.getInt(cursor.getColumnIndex(VALUE_AGE)); String address = cursor.getString(cursor.getColumnIndex(VALUE_ADDRESS)); byte pic[] = cursor.getBlob(cursor.getColumnIndex(VALUE_PIC)); PersonModel model = new PersonModel(); model.setId(id); model.setName(name); model.setIsBoy(isBoy); model.setAge(age); model.setAddress(address); model.setPic(pic); list.add(model); cursor.moveToNext(); } } cursor.close(); getWritableDatabase().close(); return list; }
五、常见问题与解答
1. 如何在 Android 中创建 SQLite 数据库?
答:可以通过继承SQLiteOpenHelper
类来创建和管理 SQLite 数据库,在onCreate
方法中使用execSQL
方法执行创建表格的 SQL 语句。
public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.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 myTable (id INTEGER PRIMARY KEY, name TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { db.execSQL("ALTER TABLE myTable ADD COLUMN age INTEGER"); } } }
2. SQLite 的查询方法有哪些?
答:SQLite 提供了多种查询方法,最常用的是rawQuery
和query
方法。rawQuery
用于执行原始 SQL 查询语句,而query
方法提供了一种更加结构化的方式来进行查询,可以指定表名、列名、查询条件、分组、排序等参数。
到此,以上就是小编对于“android用什么数据库查询”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/632418.html