1,SQLite数据库读写的操作步骤
在Android中,对SQLite数据库的操作主要包括以下步骤:
1,创建数据库:首先,您需要创建一个SQLite数据库。这可以通过在Android项目中创建一个新的类来实现,该类继承自SQLiteOpenHelper。在这个类中,您可以定义数据库名、版本号以及创建表的SQL语句。在创建数据库时,如果该数据库文件不存在,系统会调用onCreate方法来创建数据库文件,并返回一个Database对象。如果数据库文件已经存在,系统会直接打开这个数据库并返回一个Database对象。
2,创建表:在创建了数据库之后,您需要使用CREATE TABLE语句来创建表。在Android中,您可以在DatabaseHelper类中定义CREATE TABLE语句,并在onCreate方法中执行此语句来创建表。
3,插入数据:要向SQLite数据库中插入数据,您需要使用INSERT语句。INSERT语句可以在DatabaseHelper类中的方法中定义,并在需要插入数据时调用。在INSERT语句中,您需要指定要插入的表名、要插入的数据以及任何必要的条件。
4,读取数据:要读取SQLite数据库中的数据,您需要使用SELECT语句。SELECT语句可以在DatabaseHelper类中的方法中定义,并在需要读取数据时调用。在SELECT语句中,您需要指定要查询的表名、要返回的字段以及任何必要的条件。在查询数据之后,您需要关闭Cursor对象以释放资源。
5,更新数据:要更新SQLite数据库中的数据,您需要使用UPDATE语句。UPDATE语句可以在DatabaseHelper类中的方法中定义,并在需要更新数据时调用。在UPDATE语句中,您需要指定要更新的表名、要更新的数据以及任何必要的条件。
6,删除数据:要从SQLite数据库中删除数据,您需要使用DELETE语句。DELETE语句可以在DatabaseHelper类中的方法中定义,并在需要删除数据时调用。在DELETE语句中,您需要指定要删除的表名以及任何必要的条件。
7,关闭数据库:在完成所有数据库操作后,一定要记得关闭数据库连接。这可以通过调用Database对象的close方法来完成。
以上就是在Android中对SQLite数据库进行操作的基本步骤。
2,创建数据库
以下是在Android中创建数据库的参考代码:
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 = "database.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 定义数据库表名
public static final String TABLE_NAME = "table";
// 创建表的SQL语句
private String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
"_id INTEGER PRIMARY KEY," +
"name TEXT," +
"age INTEGER" +
");";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 这里可以更新数据库表结构
}
}
以上代码创建了一个名为"database.db"的SQLite数据库,并在其中创建了一个名为"table"的表。该表包含三个字段:“_id”(主键)、“name”(文本类型)和"age"(整数类型)。在onCreate方法中,调用execSQL方法执行CREATE TABLE语句来创建表。当需要更新数据库时,可以在onUpgrade方法中进行相应的操作。
注意:数据库文件存储在/data/data/package name/databases/目录下。
3,升级数据库
以下是在Android中升级数据库的参考代码:
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 = "database.db";
// 数据库版本号
private static final int DATABASE_VERSION = 2;
// 定义数据库表名
public static final String TABLE_NAME = "table";
// 创建表的SQL语句
private String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
"_id INTEGER PRIMARY KEY," +
"name TEXT," +
"age INTEGER" +
");";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 删除旧的表
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// 创建新的表
onCreate(db);
}
}
以上代码将删除旧的数据库表,并创建一个新的表来升级数据库。在onUpgrade方法中,调用execSQL方法执行DROP TABLE语句来删除旧的表,然后调用onCreate方法重新创建新的表。这样就可以实现数据库的升级。
SQLiteOpenHelper 构造函数的第四个参数表示当前数据库的版本号。只要传入比之前大的版本号,就可以让onUpgrade方法得到执行。
注意:如果如果数据库文件,例如database.db,已经存在,onCreate方法就不会再次执行,因此新添加的表就不会创建。
4,添加数据
在Android中,我们通常使用SQLite数据库来存储应用数据。以下是一个简单的示例,展示如何在Android中向SQLite数据库添加数据:
首先,我们需要创建一个数据库助手类,这个类继承了SQLiteOpenHelper。在这个类中,我们可以定义数据库的名称、版本号以及创建表的SQL语句。
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
// 数据库名
private static final String DATABASE_NAME = "database.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 定义数据库表名
public static final String TABLE_NAME = "table";
// 创建表的SQL语句
private String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
"_id INTEGER PRIMARY KEY," +
"name TEXT," +
"age INTEGER" +
");";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 这里可以更新数据库表结构
}
}
然后,我们可以创建一个新的方法来插入数据到数据库中:
public void insertData(String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("_id", 1);
values.put("name", name);
values.put("age", age);
db.insert(TABLE_NAME, null, values);
db.close();
}
在上述代码中,我们首先获取一个可写入的数据库实例,然后创建一个ContentValues对象来存储我们要插入的数据。我们使用ContentValues的put方法来添加数据,最后使用SQLiteDatabase的insert方法来插入数据。注意,每次插入数据后,我们都需要关闭数据库连接。
5,更新数据
在Android中,我们通常使用SQLite数据库来存储应用数据。如果需要更新数据库中的数据,我们可以使用SQLiteDatabase的update方法。以下是一个简单的示例,展示如何在Android中更新SQLite数据库中的数据:
我们可以创建一个新的方法来更新数据:
public void updateData(String name, int age, int id) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
db.update(TABLE_NAME, values, "_id = " + id, null);
db.close();
}
在上述代码中,我们首先获取一个可写入的数据库实例,然后创建一个ContentValues对象来存储我们要更新的数据。我们使用ContentValues的put方法来添加数据,最后使用SQLiteDatabase的update方法来更新数据。注意,每次更新数据后,我们都需要关闭数据库连接。
注意:db.update的第三和第四参数来指定更新哪几行。
6,删除数据
在Android中,我们使用SQLite数据库来存储数据。如果你想从数据库中删除数据,你可以使用SQLiteDatabase的delete方法。以下是一个简单的示例,展示如何在Android中删除SQLite数据库中的数据:
我们可以创建一个新的方法来删除数据:
public void deleteData(int id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, "_id = " + id, null);
db.close();
}
在上述代码中,我们首先获取一个可写入的数据库实例,然后使用SQLiteDatabase的delete方法来删除数据。注意,每次删除数据后,我们都需要关闭数据库连接。
7,查询数据
我们可以创建一个方法来执行查询:
public Cursor queryData(String sql) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
return cursor;
}
你可以使用上面的方法来执行你的SQL查询。这个方法会返回一个Cursor对象,你可以使用这个对象来获取查询结果。例如:
Cursor cursor = dbHelper.queryData("SELECT * FROM " + TABLE_NAME);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
// 处理数据...
}
cursor.close();
请注意,上述代码是基础用法示例,并未处理各种可能的异常。在生产环境中,你应该做好异常处理,并确保在查询结束后关闭Cursor和SQLiteDatabase。
SQLiteDatabase中还提供了一个query的方法对数据进行查询。参数如下:
8,完整的参考代码用例
在Android中,我们可以使用SQLite数据库进行CRUD(创建、读取、更新、删除)操作。以下是一个简单的例子,展示了如何在Android应用中实现这些操作:
首先,我们需要创建一个SQLite数据库和一张表。这个可以通过创建一个名为DatabaseHelper的类来完成,如下所示:
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 = "database.db";
// 数据库版本号
private static final int DATABASE_VERSION = 1;
// 定义数据库表名
public static final String TABLE_NAME = "table";
// 创建表的SQL语句
private String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
"_id INTEGER PRIMARY KEY," +
"name TEXT," +
"age INTEGER" +
");";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 这里可以更新数据库表结构
}
}
接下来,我们可以在主应用类中实现对数据库的CRUD操作:
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private DatabaseHelper dbHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化DatabaseHelper对象,并打开数据库连接
dbHelper = new DatabaseHelper(this);
db = dbHelper.getWritableDatabase();
}
// 创建记录
public void create() {
ContentValues values = new ContentValues();
values.put("_id", 1);
values.put("name", "张三");
// 年龄是整数,所以用了INTEGER类型。如果是小数,可以用REAL类型。
//如果是文本,可以用TEXT类型。如果是BLOB,可以用BLOB类型。等等。
//详情请查阅SQLite官方文档。
values.put("age", 28);
// 第一个参数是表名,第二个参数是保留字,第三个参数是
//ContentValues对象,即需要插入的数据。
db.insert(DatabaseHelper.TABLE_NAME, null, values);
}
// 读取记录(查询所有记录)
// 第一个参数是表名,第二个参数是字段数组(null表示所有字段),
//后面的参数都是保留字,最后一个是排序方式,比如"ASC"或"DESC"。
//这里没有指定排序方式,所以默认是按照_id的升序排列。
//如果需要按照其他字段排序,需要指定该字段和排序方式。
//例如:db.query(TABLE_NAME, null, "name ASC", null, null, null, null);
//表示按照name字段的升序排列。详情请查阅SQLite官方文档。
//另外,这里没有指定where子句,所以会查询所有记录。
//如果需要查询满足特定条件的记录,需要在query方法的第二个参数中指定条件,
//例如:"name = ?",并且在方法的第四个参数中指定条件对应的值,
//例如:"张三"。这样就会查询name字段等于"张三"的所有记录。如果查询条件包含多个字段,需要把多个条件用AND或OR连接起来。
//例如:"name = ? AND age > ?",并且在方法的第四个参数中指定值:"张三","25"。
//这样就会查询name字段等于"张三"并且age字段大于25的所有记录。等等。
//详情请查阅SQLite官方文档。最后需要注意的是,在查询数据之后,
//需要关闭Cursor对象以释放资源。详情请查阅Android官方文档。例如:cursor.close();
//或者 cursor.closeQuietly(); 注意这两个方法都是从Cursor类中继承
//过来的,而不是从SQLiteQuery类中继承过来的。因此可以确保资源被正确释
//放。此外,为了避免在某些情况下发生内存泄漏问题,建议在不再需要
public void read() {
Cursor cursor = db.query(DatabaseHelper.TABLE_NAME, null, null, null, null, null, null);