Android系统集成了一个轻量级的关系数据库---SQLite(占用资源少,运行效率高,安全可靠,可移植性强)


sqliteDemon效果图实现了增删改查的功能:

本案例参考了Android数据库SQLite增改查删操作演示 以及Android:Sqlite删除数据 和Android:SQLiteOpenHelper类(SQLlite数据库操作)详细解析


首先创建一个sqlite3数据库:

package com.example.sqlitedemo;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

/**

* Created by Administrator.

*/

public class DBOpenHelperextends SQLiteOpenHelper {

//定义创建数据表Lord的SQL语句

    final StringCREATE_TABLE_SQL =

"create table Lord(_id integer primary " +

"key autoincrement , name)";

public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,int version) {

super(context, name,null, version);//重写构造方法并设置工厂为null

    }

@Override

    public void onCreate(SQLiteDatabase db) {

db.execSQL(CREATE_TABLE_SQL);//创建单词信息表

    }

@Override

    // 重写基类的onUpgrade()方法,以便数据库版本更新

    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {

//提示版本更新并输出旧版本信息与新版本信息

        System.out.println("---版本更新-----" + oldVersion +"--->" + newVersion);

}

}


创建android的布局文件:

<?xml version="1.0" encoding="utf-8"?>

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity"

    android:orientation="vertical">

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="SQLite增删改查删除操作演示"

        app:layout_constraintBottom_toBottomOf="parent"

        app:layout_constraintLeft_toLeftOf="parent"

        app:layout_constraintRight_toRightOf="parent"

        app:layout_constraintTop_toTopOf="parent"

        android:layout_gravity="center"/>

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal">

            android:layout_width="300dp"

            android:layout_height="wrap_content"

            android:id="@+id/edit_insert"

            android:hint="请输入要插入的数据">

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:id="@+id/insert"

            android:text="插入">

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

            android:layout_width="150dp"

            android:layout_height="wrap_content"

            android:id="@+id/edit_before"

            android:hint="请输入更新前的内容">

            android:layout_width="150dp"

            android:layout_height="wrap_content"

            android:id="@+id/edit_after"

            android:hint="请输入更新后的内容">

            android:layout_width="100dp"

            android:layout_height="wrap_content"

            android:id="@+id/update"

            android:text="修改">

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal">

            android:layout_width="300dp"

            android:layout_height="wrap_content"

            android:id="@+id/edit_delete"

            android:hint="请输入要删除的数据">

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:id="@+id/delete"

            android:text="删除">

          android:layout_width="match_parent"

          android:layout_height="wrap_content"

          android:orientation="vertical">

              android:layout_width="match_parent"

              android:layout_height="wrap_content"

              android:id="@+id/edit_query"

              android:text="查询所有">

              android:layout_width="match_parent"

              android:layout_height="wrap_content"

              android:id="@+id/clear"

              android:text="清除所有">

          android:layout_width="match_parent"

          android:layout_height="wrap_content"

          android:orientation="vertical">

              android:layout_width="match_parent"

              android:layout_height="wrap_content"

              android:id="@+id/textview"

              android:hint="查询结果在此处">



布局展示图

MainActivity的代码:

package com.example.sqlitedemo;

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivityextends AppCompatActivityimplements View.OnClickListener {

private EditTextmEditInsert;

private ButtonmInsert;

private EditTextmEditBefore;

private EditTextmEditAfter;

private ButtonmUpdate;

private EditTextmEditDelete;

private ButtonmDelete;

private ButtonmEditQuery;

private ButtonmClear;

private DBOpenHelperdbOpenHelper;

private TextViewtextview;

@Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

dbOpenHelper =new DBOpenHelper(this,"Lord.db",null,1);

}

private void initView() {

mEditInsert = (EditText) findViewById(R.id.edit_insert);

mInsert = (Button) findViewById(R.id.insert);

mEditBefore = (EditText) findViewById(R.id.edit_before);

mEditAfter = (EditText) findViewById(R.id.edit_after);

mUpdate = (Button) findViewById(R.id.update);

mEditDelete = (EditText) findViewById(R.id.edit_delete);

mDelete = (Button) findViewById(R.id.delete);

mEditQuery = (Button) findViewById(R.id.edit_query);

mClear = (Button) findViewById(R.id.clear);

mInsert.setOnClickListener(this);

mUpdate.setOnClickListener(this);

mDelete.setOnClickListener(this);

mEditQuery.setOnClickListener(this);

mClear.setOnClickListener(this);

textview = (TextView) findViewById(R.id.textview);

textview.setOnClickListener(this);

}

@Override

    public void onClick(View v) {

switch (v.getId()) {

case R.id.insert:

insert();

break;

case R.id.update:

update();

break;

case R.id.delete:

delete();

break;

case R.id.edit_query:

query();

break;

case R.id.clear:

clean();

break;

}

}

//数据库删除记录

    private void delete() {

String content_delete=mEditDelete.getText().toString();

SQLiteDatabase db =dbOpenHelper.getWritableDatabase();

//判断用户未添加要删除的信息

        if (content_delete.isEmpty()){

Toast.makeText(MainActivity.this,"你所要删除的数据内容为空",Toast.LENGTH_SHORT).show();

}else {

db.delete("Lord","name=?",new String[]{content_delete});

Toast.makeText(MainActivity.this,"你所要删除的数据删除成功", Toast.LENGTH_SHORT).show();

}

}

//数据库查询记录

//设置查询的方法

    private void query() {

//建立游标对象

        Cursor cursor=dbOpenHelper.getReadableDatabase().query("Lord",new String [] {"name"},null,null,null,null,null);

String text_data="";

//利用游标遍历所有数据对象

        while (cursor.moveToNext()){

String name=cursor.getString(cursor.getColumnIndex("name"));

text_data=text_data+"\n"+name;

}

//为了显示全部,把所有对象连接起来,放到TextView中

        textview.setText(text_data);

cursor.close();

Toast.makeText(MainActivity.this,"查询结果如下",Toast.LENGTH_SHORT).show();

}

//清除所有的记录【清除所有的按钮】

    private void clean() {

mEditInsert.setText("");

mEditAfter.setText("");

mEditBefore.setText("");

mEditDelete.setText("");

textview.setText("");

Toast.makeText(MainActivity.this,"清除所有数据成功",Toast.LENGTH_SHORT).show();

}

@Override

    protected void onDestroy() {

super.onDestroy();

if (dbOpenHelper!=null){

//关闭游标,释放资源

            dbOpenHelper.close();

}

}

//数据库修改记录

    private void update() {

String edit_before =mEditBefore.getText().toString();

String edit_after =mEditAfter.getText().toString();

if (edit_before.isEmpty() && edit_after.isEmpty()) {

Toast.makeText(MainActivity.this,"要修改的数据不能为空", Toast.LENGTH_SHORT).show();

}else {

Toast.makeText(MainActivity.this,"修改数据成功", Toast.LENGTH_SHORT).show();

updateData(dbOpenHelper.getReadableDatabase(), edit_after);

}

}

private void updateData(SQLiteDatabase sqLiteDatabase, String name) {

String edit_before =mEditBefore.getText().toString();

String edit_after =mEditAfter.getText().toString();

ContentValues values2 =new ContentValues();

values2.put("name", edit_after);

sqLiteDatabase.update("Lord", values2,"name=?",new String[]{edit_before});

}

private void insert() {

String name =mEditInsert.getText().toString();

if (name.isEmpty()) {

Toast.makeText(MainActivity.this,"插入数据不能为空", Toast.LENGTH_SHORT).show();

}else {

insertData(dbOpenHelper.getReadableDatabase(), name);

Toast.makeText(MainActivity.this,"插入数据成功", Toast.LENGTH_SHORT).show();

}

}

//创建存放数据的ContentValues对象

    private void insertData(SQLiteDatabase sqLiteDatabase, String name) {

ContentValues values1 =new ContentValues();

values1.put("name", name);

//数据库执行插入命令

        sqLiteDatabase.insert("Lord",null, values1);

}

}


更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. Flutter误删除android/ios目录怎么办?
  4. Android数据绑定组件RoboBinding使用详解
  5. android SharedPreferences 记录数据
  6. Android(安卓)RSS阅读器
  7. Android-Adapter适配器
  8. Android(安卓)studio上面学习Aidl实现复杂数据类型的传递
  9. android通过蓝牙实现两台手机传输数据

随机推荐

  1. Qt for Android 程序禁止屏幕旋转
  2. android ksoap调用天气预报
  3. android视频播放
  4. Android性能优化之管理应用的内存
  5. Android开发学习之设置Android壁纸的功能
  6. android中关于scrollview内部组件android
  7. Android ContentProvider实现应用间数据
  8. Android常见游戏引擎及使用实例
  9. Android学习系列(15)--App列表之下拉刷新
  10. Android(安卓)BroadcastReceiver应用详解