SQLite数据库是一种用于手机app的轻量型数据库;
Android系统封装了一个类: SqliteOpenHelper(它是抽象类)是主要用来使用的SQLite的。
但实际使用SQLite数据有更加方便与便捷的方法: Room三角色,这篇没有介绍,只是介绍SQLite的使用;
创建数据库
Activity_main.java
package com.example.sqlite;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void create_base(View view) {
SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
SQLiteDatabase read = helper.getReadableDatabase();
}
}
Activity_main.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生成数据库"
android:onClick="create_base"/>
LinearLayout>
MySQLiteOpenHelper.java
package com.example.sqlite;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
private static SQLiteOpenHelper mInstance;
public static synchronized SQLiteOpenHelper GetmInstance(Context context){
if (mInstance == null){
mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);
}
return mInstance;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
在上面的基础上添加”增删改查”功能
————主要是在Activity_main.java中增加代码,MySQLiteOpenHelper.java和Activity_main.xml也要修改;
Activity_main.java
package com.example.sqlite;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void create_base(View view) {
SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
SQLiteDatabase read = helper.getReadableDatabase();
}
public void query(View view) {
SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
SQLiteDatabase db = helper.getReadableDatabase();
if (db.isOpen()){
Cursor cursor = db.rawQuery("select * from persons",null);
while(cursor.moveToNext()){
int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.e("leo", "query:_id "+id + "name:"+name);
cursor.close();
db.close();
}
}
}
public void insert(View view) {
SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()){
String sql = "insert into persons(name) values('Derry老师')";
db.execSQL(sql);
}
db.close();
}
public void update(View view) {
SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen()){
String sql = "update persons set name = ? where _id =?";
db.execSQL(sql,new Object[]{"李连杰",5});
}
db.close();
}
public void delete(View view) {
SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);
SQLiteDatabase db = helper.getWritableDatabase();
if (db.isOpen())
{
String sql ="delete from persons where _id = ?";
db.execSQL(sql,new Object[]{4});
}
db.close();
}
}
MySQLiteOpenHelper.java
package com.example.sqlite;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
private static SQLiteOpenHelper mInstance;
public static synchronized SQLiteOpenHelper GetmInstance(Context context){
if (mInstance == null){
mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);
}
return mInstance;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql = "create table persons(_id integer primary key autoincrement,name text)";
sqLiteDatabase.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
Activity_main.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生成数据库"
android:onClick="create_base"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"
android:onClick="query"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插入"
android:onClick="insert"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改"
android:onClick="update"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:onClick="delete"/>
LinearLayout>
Original: https://blog.csdn.net/GAOK11/article/details/121843612
Author: G.O.Y
Title: Android开发 SQLite数据库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816047/
转载文章受原作者版权保护。转载请注明原作者出处!