具体实现

添加成功:

界面代码很简单,直接忽略。

连接数据库的代码:

Connect.java

package com.example.myapplication.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class Connect extends SQLiteOpenHelper { //数据库名
private static final String db_name="user.db"; //表名
private static final String table_name="user_info"; //版本号
private static final int db_version=1; //数据库帮助器的初定义
private static Connect mHelper=null; //读写得初定义
private SQLiteDatabase mRDB=null;
private SQLiteDatabase mWDB=null; private Connect(Context context){
super(context,db_name,null,db_version); } //利用单例模式获取数据库帮助器的唯一实例
public static Connect getInstance(Context context){
if(mHelper==null){
mHelper=new Connect(context);
} return mHelper;
} //打开数据库得读操作
public SQLiteDatabase openReadLink(){
if(mRDB==null||!mRDB.isOpen()){
mRDB=mHelper.getReadableDatabase();
} return mRDB;
} //打开数据库的写操作
public SQLiteDatabase openWriteLink(){
if(mWDB==null||!mWDB.isOpen()){
mWDB=mHelper.getWritableDatabase();
} return mWDB;
} //关闭数据库连接
public void closeLink(){
if(mRDB!=null&&mRDB.isOpen()){
mRDB.close();
mRDB=null;
} if(mWDB!=null&&mWDB.isOpen()){
mWDB.close();
mWDB=null;
}
} //创建数据库,执行建表语句
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql="create table if not exists "+table_name+" ("+
" name varchar primary key not null," +
" cla varchar not null,"+
" major varchar not null);"; sqLiteDatabase.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
//onCreate(sqLiteDatabase);
} //添加语句
public long insert(User user){
ContentValues values=new ContentValues();
values.put("name",user.getName());
values.put("cla",user.getCla());
values.put("major",user.getMajor());
//values.put("student",user.getStudent()); return mWDB.insert(table_name,null,values);
}
}

start.java

package com.example.myapplication;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast; import com.example.myapplication.database.Connect;
import com.example.myapplication.database.User; import java.util.Random; public class start extends AppCompatActivity implements View.OnClickListener { private EditText et_name;
private EditText et_class;
private EditText et_major;
private CheckBox cb_remember; private Button btn_add;
private Button btn_delete;
private Button btn_update;
private Button btn_check; private Connect mHelper; @Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start); et_name=findViewById(R.id.et_name);
et_class=findViewById(R.id.et_class);
et_major=findViewById(R.id.et_major);
cb_remember=findViewById(R.id.cb_remember); btn_add=findViewById(R.id.btn_add);
btn_delete=findViewById(R.id.btn_delete);
btn_update=findViewById(R.id.btn_update);
btn_check=findViewById(R.id.btn_check); btn_add.setOnClickListener(this);
btn_delete.setOnClickListener(this);
btn_update.setOnClickListener(this);
btn_check.setOnClickListener(this); } @Override
protected void onStart() {
super.onStart(); //获取数据库帮助器实例
mHelper= Connect.getInstance(this); //读写操作
mHelper.openReadLink();
SQLiteDatabase db= mHelper.openWriteLink(); mHelper.onCreate(db);
} @Override
protected void onStop() {
super.onStop();
//关闭操作
mHelper.closeLink();
} @Override
public void onClick(View view) {
String name=et_name.getText().toString();
String cla=et_class.getText().toString();
String major=et_major.getText().toString(); User user=null; switch(view.getId()){
case R.id.btn_add:
user=new User(name,cla,major);
//mHelper.insert(user);
if(mHelper.insert(user)>0){
Toast.makeText(this,"添加成功!",Toast.LENGTH_SHORT).show();
}
break;
}
}
}

Android笔记--Android+数据库的增加数据的实现的更多相关文章

  1. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  2. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  3. Android笔记——Android中数据的存储方式(三)

    Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...

  4. Android笔记——Activity中的回传数据案例(装备选择)

    1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  5. Android笔记——Android自定义控件

    目录: 1.自定义控件概述 01_什么是自定义控件 Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果 ...

  6. ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

    //TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...

  7. Android笔记——Android中数据的存储方式(一)

    Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...

  8. Android笔记:Socket客户端收发数据

    client.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...

  9. Android笔记——Android框架

    本篇将站在顶级的高度--架构,来看android.我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来 学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如果一开始就对整个an ...

  10. Android笔记——Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

    在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为"visible "."invisible"."gone&quo ...

随机推荐

  1. Qt中资源文件qrc中的路径访问

    首先先看一下我们的qrc文件目录结构:  在文件系统中的目录结构是这样的:   请务必注意这边的前缀(按照网友推荐,大部分项目前缀都是只写一个"/"):  接下来进入正题,我们来分 ...

  2. k8s 更改pod数量限制(默认每个节点最多110组pod)

      1.登录 node 节点,查看kubelet启动文件路径 [root@xxxxxxxZ ~]# systemctl status kubelet ● kubelet.service - kubel ...

  3. elk安装(简)

    1.到官网下载对应的版本注意最好使用版本相同的3个软件 elasticsearch-6.8.7.rpm kibana-6.8.7-x86_64.rpm logstash-6.8.7.rpm 我这里使用 ...

  4. Yii2安装步骤

    通过 Composer 安装了半天一直网络报错,配置了镜像,又报错依赖,运行跳过依赖,这个命令还是报错,我裂开. 最后只能利用归档文件安装,1.下http://www.yiiframework.com ...

  5. python菜鸟学习: 2.列表操作

    # -*- coding: utf-8 -*-# 列表操作names = ["LiSi", "ZhangSan", "WangWu"]pri ...

  6. Python-pytest -> 在自动化测试中,如何切换不同的测试环境

    在构建自动化测试的脚本时候,我们可能会有不同环境的测试需求,如何实现在不同的测试环境之间切换呢?接下来介绍的这种方法,可以自定义命令行参数,从而根据不同的参数值实现不同环境的切换. 解决办法: 使用h ...

  7. 使用IScroll组件出现滑动卡顿问题解决方法

    var is = new IScroll('#wrapper2', { scrollX: true, scrollY: false, click: true, keyBindings: true, / ...

  8. win10 wampserver升级 php7.0至 php7.2

    1.去官网下载php7.2 下载地址: https://windows.php.net/download#php-7.0 2.下载安装 visual c++ 2017 或  visual c++ 20 ...

  9. [CQOI2014]通配符匹配 题解

    第一眼:什么鬼东西ヾ(。`Д´。) 第二眼:显然,这道题要分段处理 类似[TJOI2018]碱基序列\ (建议做一做也是Hash+DP)\ 那你怎么第一眼没看出来 Hash处理+DP==AC 直接上代 ...

  10. php【websocket】

    在PHP中,开发者需要考虑的东西比较多,从socket的连接.建立.绑定.监听等都需要开发者自己去操作完成,对于初学者来说,难度方面也挺大的.下面就简单介绍一下,可供参考 一.socket协议的简介 ...