android studio数据存储建立SQLite数据库实现增删查改

 更新时间:2021年12月21日 08:21  点击:306 作者:wow_awsl_qwq

实验目的:

分别使用sqlite3工具和Android代码的方式建立SQLite数据库。在完成建立数据库的工作后,编程实现基本的数据库操作功能,包括数据的添加、删除和更新。

实验要求:

  • 1.创建一个学生管理的应用,基本信息包含学生姓名,班级,学号。采用数据库存储这些信息。
  • 2.应用应该至少包含信息录入和删除功能。
  • 3.数据显示考虑采用ListView。

实验效果:

在这里插入图片描述

工程结构:

在这里插入图片描述

源代码:

DBAdapter.java

package com.example.shiyan6_sqlite;

import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class DBAdapter {

 private static final String DB_NAME = "student.db";
 private static final String DB_TABLE = "peopleinfo";
 private static final int DB_VERSION = 1;

 public static final String KEY_ID = "_id";
 public static final String KEY_NAME = "name";
 public static final String KEY_BANJI = "banji";
 public static final String KEY_XUEHAO = "xuehao";

 private SQLiteDatabase db;
 private final Context context;
 private DBOpenHelper dbOpenHelper;

 public DBAdapter(Context _context) {
  context = _context;
 }

 public void close() {
  if(db !=null)
  {
   db.close();
   db=null;
  }
 }

 public void open() throws SQLiteException {
  dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);
  try {
   db = dbOpenHelper.getWritableDatabase();
  }
  catch (SQLiteException ex) {
   db = dbOpenHelper.getReadableDatabase();
  }
 }


 public long insert(People people) {
  ContentValues newValues = new ContentValues();
  newValues.put(KEY_NAME, people.Name);
  newValues.put(KEY_BANJI, people.Banji);
  newValues.put(KEY_XUEHAO, people.Xuehao);

  return db.insert(DB_TABLE, null, newValues);
 }


 public People[] queryAllData() {
  Cursor results =  db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_BANJI, KEY_XUEHAO},
    null, null, null, null, null);
  return ConvertToPeople(results);
 }

 public People[] queryOneData(long id) {
  Cursor results =  db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_BANJI, KEY_XUEHAO},
    KEY_ID + "=" + id, null, null, null, null);
  return ConvertToPeople(results);
 }

 @SuppressLint("Range")
 private People[] ConvertToPeople(Cursor cursor){
  int resultCounts = cursor.getCount();
  if (resultCounts == 0 || !cursor.moveToFirst()){
   return null;
  }
  People[] peoples = new People[resultCounts];
  for (int i = 0 ; i<resultCounts; i++){
   peoples[i] = new People();
   peoples[i].ID = cursor.getInt(0);
   peoples[i].Name = cursor.getString(cursor.getColumnIndex(KEY_NAME));
   peoples[i].Banji = cursor.getString(cursor.getColumnIndex(KEY_BANJI));
   peoples[i].Xuehao = cursor.getString(cursor.getColumnIndex(KEY_XUEHAO));
   cursor.moveToNext();
  }
  return peoples;
 }

 public long deleteAllData() {
  return db.delete(DB_TABLE, null, null);
 }

 public long deleteOneData(long id) {
  return db.delete(DB_TABLE,  KEY_ID + "=" + id, null);
 }

 public long updateOneData(long id , People people){
  ContentValues updateValues = new ContentValues();
  updateValues.put(KEY_NAME, people.Name);
  updateValues.put(KEY_BANJI, people.Banji);
  updateValues.put(KEY_XUEHAO, people.Xuehao);

  return db.update(DB_TABLE, updateValues,  KEY_ID + "=" + id, null);
 }

 private static class DBOpenHelper extends SQLiteOpenHelper {

  public DBOpenHelper(Context context, String name, CursorFactory factory, int version) {
   super(context, name, factory, version);
  }

  private static final String DB_CREATE = "create table " +
    DB_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " +
    KEY_NAME+ " text not null, " + KEY_BANJI+ " text not null," + KEY_XUEHAO + " text not null);";

  @Override
  public void onCreate(SQLiteDatabase _db) {
   _db.execSQL(DB_CREATE);
  }

  @Override
  public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {
   _db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
   onCreate(_db);
  }
 }
}

People.java

package com.example.shiyan6_sqlite;

public class People {
 public int ID = -1;
 public String Name;
 public String Banji;
 public String Xuehao;

 @Override
 public String toString(){
  String result = "";
  result += "ID:" + this.ID + ",";
  result += "姓名:" + this.Name + ",";
  result += "班级:" + this.Banji + ", ";
  result += "学号:" + this.Xuehao;
  return result;
 }
}


MainActivity.java

package com.example.shiyan6_sqlite;

import androidx.appcompat.app.AppCompatActivity;

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;

public class MainActivity extends AppCompatActivity {

    EditText e_xm,e_nl,e_sg,e_id;
    TextView t_1;
    Button b_add,b_allsee,b_clearsee,b_alldel,b_delid,b_seeid,b_updid;
    DBAdapter dbAdapter;
    SQLiteDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        e_xm=findViewById(R.id.e_xm);
        e_nl=findViewById(R.id.e_nl);
        e_sg=findViewById(R.id.e_sg);
        b_add=findViewById(R.id.b_add);
        b_allsee=findViewById(R.id.b_allsee);
        b_clearsee=findViewById(R.id.b_clearall);
        b_alldel=findViewById(R.id.b_delall);
        b_delid=findViewById(R.id.b_delid);
        b_seeid=findViewById(R.id.b_seeid);
        b_updid=findViewById(R.id.b_updid);
        e_id=findViewById(R.id.e_id);
        t_1=findViewById(R.id.t_1);
        dbAdapter=new DBAdapter(this);
        dbAdapter.open();


        b_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                People t=new People();
                t.Name=e_xm.getText().toString();
                t.Banji=e_nl.getText().toString();
                t.Xuehao=e_sg.getText().toString();
                long colunm=dbAdapter.insert(t);
                if (colunm == -1 ){
                    t_1.setText("添加过程错误!");
                } else {
                    t_1.setText("成功添加数据,ID:"+String.valueOf(colunm));
                }
            }
        });

        b_allsee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                People [] peoples =dbAdapter.queryAllData();
                if (peoples == null){
                    t_1.setText("数据库中没有数据");
                    return;
                }
                String t="数据库:\n";
                for(int i=0;i<peoples.length;++i){
                    t+=peoples[i].toString()+"\n";
                }
                t_1.setText(t);
            }
        });

        b_clearsee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                t_1.setText("");
            }
        });

        b_alldel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dbAdapter.deleteAllData();
                t_1.setText("已删除所有数据!");
            }
        });

        b_delid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int id=Integer.parseInt(e_id.getText().toString());
                long result=dbAdapter.deleteOneData(id);
                String msg = "删除ID为"+e_id.getText().toString()+"的数据" + (result>0?"成功":"失败");
                t_1.setText(msg);
            }
        });

        b_seeid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int id=Integer.parseInt(e_id.getText().toString());
                People people[]=dbAdapter.queryOneData(id);
                if(people==null){
                    t_1.setText("Id为"+id+"的记录不存在!");
                }
                else{
                    t_1.setText("查询成功:\n"+people[0].toString());
                }
            }
        });

        b_updid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int id=Integer.parseInt(e_id.getText().toString());
                People t=new People();
                t.Name=e_xm.getText().toString();
                t.Banji=e_nl.getText().toString();
                t.Xuehao=e_sg.getText().toString();
                long n=dbAdapter.updateOneData(id,t);
                if (n<0){
                    t_1.setText("更新过程错误!");
                } else {
                    t_1.setText("成功更新数据,"+String.valueOf(n)+"条");
                }
            }
        });
    }

    @Override
    protected void onStop() {
        super.onStop();
        dbAdapter.close();
    }
}

到此这篇关于vandroid studio数据存储建立SQLite数据库实现增删查改的文章就介绍到这了,更多相关数据存储建立SQLite数据库实现增删查改内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

原文出处:https://blog.csdn.net/qq_42641977/article/details/121970828

[!--infotagslink--]

相关文章

  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 关于Visual Studio无法打开源文件"stdio.h"问题

    这篇文章主要介绍了关于Visual Studio无法打开源文件"stdio.h"问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-03
  • C#简单访问SQLite数据库的方法(安装,连接,查询等)

    这篇文章主要介绍了C#简单访问SQLite数据库的方法,涉及SQLite数据库的下载、安装及使用C#连接、查询SQLIte数据库的相关技巧,需要的朋友可以参考下...2020-06-25
  • C#客户端程序Visual Studio远程调试的方法详解

    这篇文章主要给大家介绍了关于C#客户端程序Visual Studio远程调试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • C#中嵌入SQLite数据库的简单方法

    本文给大家介绍的是C#中嵌入SQLite数据库的简单方法,十分的方便也很实用,有需要的小伙伴可以参考下。...2020-06-25
  • C#创建SQLite控制台应用程序详解

    这篇文章主要为大家详细介绍了C#创建SQLite控制台应用程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • Android Studio真机无线连接USB设备调试运行详解流程

    你在Android Studio写app时是否也有想过如果可以不用数据线连接手机调试运行就好了?如果需要取出数据线插接的话我肯定是嫌麻烦的,但是模拟器有时候需要测试一些需要硬件支持的功能时又不管用,所以最好的测试还是在真机上,本篇教你扔掉数据线来无线调试...2021-11-04
  • Sqlite 常用函数 推荐

    Sqlite 常用函数,在实际开发中,经常遇的到。...2020-07-11
  • 解决Visual Studio 2012 Update 4 RC启动调试失败的方案

    这篇文章主要为大家详细介绍了Visual Studio 2012 Update 4 RC启动调试失败的解决方案,感兴趣的小伙伴们可以参考一下...2021-09-22
  • Android Studio Build Output 栏内汉字出现乱码的解决方案

    先上个图就是图中红框内显示的毛病,Build Output栏中的汉字出现了乱码,其它地方都没有乱码。移动开发...2020-05-02
  • AndroidStudio升级4.1后启动失败Plugin问题解决

    这篇文章主要介绍了AndroidStudio升级4.1后启动失败Plugin问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-18
  • C#解决SQlite并发异常问题的方法(使用读写锁)

    这篇文章主要介绍了C#解决SQlite并发异常问题的方法,通过使用读写锁达到多线程安全访问,进而解决SQLite并发异常的问题,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Android Studio 配置忽略文件的方法实现

    这篇文章主要介绍了Android Studio 配置忽略文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-14
  • 在 Visual Studio 中查看反汇编代码

    这篇文章主要介绍了在 Visual Studio 中查看反汇编代码的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-03
  • C#操作SQLite数据库之读写数据库的方法

    这篇文章主要介绍了C#操作SQLite数据库之读写数据库的方法,简单分析了C#针对SQLite数据库的读写及显示等操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Android Studio如何查看源码并调试的方法步骤

    这篇文章主要介绍了Android Studio如何查看源码并调试的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
  • SQLite在C#中的安装与操作技巧

    SQLite,是一款轻型的数据库,用于本地的数据储存。其优点有很多,下面通过本文给大家介绍SQLite在C#中的安装与操作技巧,感兴趣的的朋友参考下吧...2020-06-25
  • 在Visual Studio 中使用git及Git概念

    Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具,本文重点给大家介绍在Visual Studio 中使用git及git的工作原理,感兴趣的朋友一起看看吧...2021-05-19
  • Android Studio实现帧动画

    这篇文章主要为大家详细介绍了Android Studio实现帧动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-11-14