Android数据库SQLite增改查删操作演示

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);

}

}


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容