1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Android开发 SQLite数据库

Android开发 SQLite数据库

时间:2020-10-03 21:08:06

相关推荐

Android开发 SQLite数据库

SQLite数据库是一种用于手机app的轻量型数据库;

Android系统封装了一个类:SqliteOpenHelper(它是抽象类)是主要用来使用的SQLite的。

但实际使用SQLite数据有更加方便与便捷的方法:Room三角色,这篇没有介绍,只是介绍SQLite的使用;

创建数据库

Activity_main.javaActivity_main.xmlMySQLiteOpenHelper.java

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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/*** 生成数据库:database* @param view*/public void create_base(View view) {SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);//数据库的创建,靠下面下面这个代码,和这句一样:helper.getWritableDatabase();SQLiteDatabase read = helper.getReadableDatabase();}}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"xmlns:android="/apk/res/android"><Buttonandroid: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;/*** MysqliteOpenHelper 工具类 单例模式(1,构造函数私有化 2,对外提供函数)*/public class MySQLiteOpenHelper extends SQLiteOpenHelper {//1.构造函数私有化private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);}//2.提供外部函数private static SQLiteOpenHelper mInstance;public static synchronized SQLiteOpenHelper GetmInstance(Context context){if (mInstance == null){//数据库名字叫“basedata.db”mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);}return mInstance;}//初始化数据库时使用@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {}//数据库升级时使用@Overridepublic 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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/*** 生成数据库:database* @param view*/public void create_base(View view) {SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);//数据库的创建,靠下面下面这个代码,和这句一样:helper.getWritableDatabase();SQLiteDatabase read = helper.getReadableDatabase();}/*** 查询数据库* @param view*/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();}}}/*** 插入数据* @param view*/public void insert(View view) {SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);SQLiteDatabase db = helper.getWritableDatabase();//确保数据库打开,安全操作if (db.isOpen()){//插入语句(SQL)一般SQL语句写出常量。用的时候调用String sql = "insert into persons(name) values('Derry老师')";db.execSQL(sql);}//数据库关闭db.close();}/*** 修改第五条数据* @param view*/public void update(View view) {SQLiteOpenHelper helper = MySQLiteOpenHelper.GetmInstance(this);SQLiteDatabase db = helper.getWritableDatabase();if (db.isOpen()){//修改语句(SQL)?问号相当于占位符String sql = "update persons set name = ? where _id =?";db.execSQL(sql,new Object[]{"李连杰",5});}//数据库关闭db.close();}/*** 删除第四条数据* @param view*/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;/*** MysqliteOpenHelper 工具类 单例模式(1,构造函数私有化 2,对外提供函数)*/public class MySQLiteOpenHelper extends SQLiteOpenHelper {//1.构造函数私有化private MySQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);}//2.提供外部函数private static SQLiteOpenHelper mInstance;public static synchronized SQLiteOpenHelper GetmInstance(Context context){if (mInstance == null){//数据库名字叫“basedata.db”mInstance = new MySQLiteOpenHelper(context,"basedata.db",null,1);}return mInstance;}//创建表 表数据初始化 数据库第一次创建的时候调用 第二次发现有表就不会重复创建了,此函数只会调用一次//初始化数据库时使用@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {//创建主键 _id 怎么写才可以//主键是唯一的//主键自动增长,autoincrementString sql = "create table persons(_id integer primary key autoincrement,name text)";sqLiteDatabase.execSQL(sql);}//数据库升级时使用@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {}}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"xmlns:android="/apk/res/android"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="生成数据库"android:onClick="create_base"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查询"android:onClick="query"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="插入"android:onClick="insert"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="修改"android:onClick="update"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除"android:onClick="delete"/></LinearLayout>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。