安卓如何连接sql数据库_数据库有哪些

Android (3) 2024-07-07 18:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
安卓如何连接sql数据库_数据库有哪些,希望能够帮助你!!!。

SQLite数据库是一种用于手机app的轻量型数据库;
Android系统封装了一个类:SqliteOpenHelper(它是抽象类)是主要用来使用的SQLite的。
但实际使用SQLite数据有更加方便与便捷的方法:Room三角色,这篇没有介绍,只是介绍SQLite的使用;

创建数据库

  1. Activity_main.java
  2. Activity_main.xml
  3. MySQLiteOpenHelper.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> 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复