irpas技术客

Android开发 SQLite数据库_G.O.Y_android sqlite开发

未知 754

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 { @Override protected 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"?> <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; /** * 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; } //初始化数据库时使用 @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); } /** * 生成数据库: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; } //创建表 表数据初始化 数据库第一次创建的时候调用 第二次发现有表就不会重复创建了,此函数只会调用一次 //初始化数据库时使用 @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //创建主键 _id 怎么写才可以 //主键是唯一的 //主键自动增长,autoincrement 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

<?xml version="1.0" encoding="utf-8"?> <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>


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #Sqlite开发 #androidxappcom