Android笔记--Android+数据库的增加数据的实现
具体实现
添加成功:

界面代码很简单,直接忽略。
连接数据库的代码:
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+数据库的增加数据的实现的更多相关文章
- Android笔记——Android中数据的存储方式(二)
		
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
 - android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
		
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
 - Android笔记——Android中数据的存储方式(三)
		
Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...
 - Android笔记——Activity中的回传数据案例(装备选择)
		
1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...
 - Android笔记——Android自定义控件
		
目录: 1.自定义控件概述 01_什么是自定义控件 Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果 ...
 - ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )
		
//TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...
 - Android笔记——Android中数据的存储方式(一)
		
Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...
 - Android笔记:Socket客户端收发数据
		
client.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...
 - Android笔记——Android框架
		
本篇将站在顶级的高度--架构,来看android.我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来 学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如果一开始就对整个an ...
 - Android笔记——Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
		
在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为"visible "."invisible"."gone&quo ...
 
随机推荐
- Thread 的run方法和start方法的区别
			
start()方法是用来启动线程,实现了多线程运行 点进去查看源码,发现start方法创建一个线程 并让线程处于就绪状态,并且在start方法内会调用start0()方法,而start0作为本地方法 ...
 - python菜鸟学习: 3.浅copy使用场景
			
# -*- coding: utf-8 -*-import copy# 浅copy# 使用场景,比如A,B夫妻共有一个银行账户,存取马宁的数据username = ["name", ...
 - flume往kafka中导入数据
			
1.编辑flume的配置文件 a1.sources = r1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = ...
 - 07 如果再使用animateCC2018或者苹果系统使用animate时出现Uncaught ReferenceError: lib is not defined的错误
			
我刚开始还以为是模板造成的,换了个没有问题的模板就没有问题了,原来问题是这样. 点我预览,请看该文章
 - 【pytest】执行测试不输出logging日志问题
			
[一] 今天更新了一波pytest,4.50 -> 6.2.3.执行了一波测试发现之前的logging输出不见了. 看了下启动参数 --log-cli-level=LOG_CLI_LEVEL 加 ...
 - vue中form表单校验,一个form-item中有多个必填项如何操作?
			
普通的正则校验就不具体写了. 项目中遇到一个el-form-item含有多个input或者select,如何绑定值? // 一个form-item中有多个必填项 <el-form-item la ...
 - 【jinja2】Python根据模板生成HTML文件并加载进QWebEngineView
			
前言 继前文Python在PyQt5中使用ECharts绘制图表中在Python程序中添加网页展示ECharts图表,和Python使用QWebEngineView时报错Uncaught Refere ...
 - 20200925--矩阵加法(奥赛一本通P93 6 多维数组)
			
输入两个n行m列的矩阵A和B,输出它们的和A+B 输入: 第1行包含两个整数n和m(1<=n<=100,1<=m<=100),表示矩阵的行数和列数. 接下来n行,每行m个整数, ...
 - Shell脚本基本命令5
			
1.sort的稳定性 例以前面两个字段为键值,排序这四行 $ sort -t_ -k1,1 -k2,2 <<EOF one_two one_two_three one_two_four ...
 - 视觉里程计--视觉slam7.1/相机运动估计视觉算法
			
视觉里程计 本篇文章记录了少许阅读<视觉slam14讲>的阅读整理,不是特别全面,只是为了本次项目中特定任务搜查资料,时间比较紧,文章并没有全面涵盖所有知识点.日后若时间有空闲,将回来补充 ...