(1)、java文件

1、DbHelper

package com.example.cl4;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;public class DbHelper extends SQLiteOpenHelper {final String create_table = "CREATE TABLE Users (_id integer primary key autoincrement,phone_number text,userpassword text)";Context context;public DbHelper(Context context,String  dbname,int version){super(context,dbname,null,version);this.context = context;}@Overridepublic void onCreate(SQLiteDatabase db){db.execSQL(create_table);}@Overridepublic void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){db.execSQL("drop table Users if exists Users");db.execSQL(create_table);}public void insert(ContentValues values){SQLiteDatabase db = getWritableDatabase();db.insert("Users",null,values);Toast.makeText(context,"插入数据完成",Toast.LENGTH_SHORT).show();}public Cursor queryAll(){SQLiteDatabase db = getWritableDatabase();Cursor cursor = db.query("Users",null,null,null,null,null,null);return cursor;}public Boolean queryUser (String userPhone){SQLiteDatabase db = getWritableDatabase();Cursor cursor = db.query("Users", new String[]{"phone_number"},"phone_number=?",new String[]{userPhone},null,null,null);if (cursor.moveToFirst())return true;elsereturn false;}public Boolean query(String userpassword){SQLiteDatabase db = getWritableDatabase();Cursor cursor = db.query("Users", new String[]{"userpassword"},"userpassword=?",new String[]{userpassword},null,null,null);if (cursor.moveToFirst())return true;elsereturn false;}public  void  delUser(String userPhone){SQLiteDatabase db = getWritableDatabase();db.delete("Users","phone_number=?",new String[]{userPhone});}
}

2、MainActivity

package com.example.cl4;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {DbHelper dbHelper;EditText et_phone;EditText et_password;TextView tv_show;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper=new DbHelper(MainActivity.this,"MyDataBase,",1);//        Button btn_link = findViewById(R.id.btn_link_database);Button btn_insert = findViewById(R.id.btn_insert);Button btn_show = findViewById(R.id.btn_show);Button btn_del = findViewById(R.id.btn_del);Button btn_dl = findViewById(R.id.btn_dl);et_password=findViewById(R.id.et_password);et_phone=findViewById(R.id.et_phone);tv_show = findViewById(R.id.tv_show);//        btn_link.setOnClickListener(new myClass());//不再使用匿名类,自己写一个类btn_insert.setOnClickListener(new myClass());btn_show.setOnClickListener(new myClass());btn_del.setOnClickListener(new myClass());btn_dl.setOnClickListener(new myClass());}class myClass implements View.OnClickListener{//重写OnClickListener方法@Override//类部类(类里面又有一个类)public void onClick(View v){int key=v.getId();//根据id判断所做的事情switch (key){
//                case R.id.btn_link_database:
//                    dbHelper=new DbHelper(MainActivity.this,"MyDataBase,",1);
//                    //传入参数
//                    //当这个按键被按下时,需要做的是打开数据库MyDataBase,versio(数据库版本)可以将它改为变量
//                    break;case R.id.btn_dl:String phone1=et_phone.getText().toString();String password1=et_password.getText().toString();if (dbHelper.queryUser(phone1)==true&&dbHelper.query(password1)==true){Intent intent = new Intent(MainActivity.this,MainActivity2.class);startActivity(intent);}else{AlertDialog.Builder b=new AlertDialog.Builder(MainActivity.this);b.setTitle("").setMessage("账号或密码错误");b.setNegativeButton("重新输入", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});AlertDialog alert=b.create();alert.show();}break;case R.id.btn_insert:String phone = et_phone.getText().toString();String pass = et_password.getText().toString();if(TextUtils.isEmpty(phone)||TextUtils.isEmpty(pass)){//判断是否为空Toast.makeText(MainActivity.this,"号码或密码不能为空",Toast.LENGTH_SHORT).show();return;}ContentValues values = new ContentValues();values.put("phone_number",phone);values.put("userpassword",pass);//名称在DbHelper里定义过dbHelper.insert(values);
//                    showUser();//调用最后showUser的方法break;case R.id.btn_show:showUser();
//                    Cursor cursor = dbHelper.queryAll();//返回值是一个curs型,把它放入cursor里
//                    String str = "_id        电话         密码\n";
//                    if (cursor.moveToFirst())  //如果数据库为空,则moveTofirst就不会执行
//                        do {//先做后判断
//                            str += cursor.getString(0)+"      ";
//                            str += cursor.getString(1)+"      ";
//                            str += cursor.getString(2)+"\n";
//                        }while (cursor.moveToNext());
//                        tv_show.setText(str);//显示出strbreak;case R.id.btn_del://删除按钮,输入进行查找删除showUser();phone = et_phone.getText().toString();if(!isEmptyPhone()) {//判断是否为空if (dbHelper.queryUser(phone)){dbHelper.delUser(phone);Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();showUser();}else {Toast.makeText(MainActivity.this, "号码不存在", Toast.LENGTH_SHORT).show();return;}}}}public boolean isEmptyPhone(){String phone = et_phone.getText().toString();if(TextUtils.isEmpty(phone)) {//判断是否为空Toast.makeText(MainActivity.this, "号码不存在", Toast.LENGTH_SHORT).show();}return false;}public void showUser(){Cursor cursor = dbHelper.queryAll();//返回值是一个curs型,把它放入cursor里String str = "_id           电话            密码\n";if (cursor.moveToFirst())  //如果数据库为空,则moveTofirst就不会执行do {//先做后判断str += cursor.getString(0)+"             ";str += cursor.getString(1)+"             ";str += cursor.getString(2)+"\n";}while (cursor.moveToNext());tv_show.setText(str);//显示出str}}
}

3、MainActivity2(新建页面,主要用于登录跳转)

package com.example.cl4;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity2 extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}
}

(2)、XML布局文件

1、activity_main

<?xml version="1.0" encoding="utf-8"?>
<ScrollViewandroid:layout_width="match_parent"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_height="match_parent" ><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"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"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入电话号码"android:id="@+id/et_phone"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入密码"android:inputType="textPassword"android:id="@+id/et_password"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="插入数据"android:id="@+id/btn_insert"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="显示数据"android:id="@+id/btn_show"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="删除"android:id="@+id/btn_del"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录"android:id="@+id/btn_dl"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/tv_show"/></LinearLayout>
</ScrollView>

2、mainactivity2

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"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=".MainActivity2"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv1"android:text="嘿嘿嘿"/></LinearLayout>

*注意事项:在调试时发现报错,后在AndroidManifest中声明

<activity android:name=".MainActivity2"></activity>运行正常

(3)、效果图

1、插入数据

2、显示数据

3、删除数据

4、登录

Android端简单数据库实现相关推荐

  1. Android端简单易用的SPI框架,成功入职字节跳动

    阿里面试 自我介绍 首先要介绍自己的项目经验和个人的擅长点,因为面试官主要考察你的表达能力和语言精简能力. 简历的编写其实这里可能需要注意几点: 1.标题的直接按照姓名-几年工作经验-应聘岗位格式来填 ...

  2. 独家食用指南系列|Android端SQLite的浅尝辄止

    大家好,本周技术拆解官的第一篇文章,给大家带来的是我们的新主题<独家食用指南系列>.作为新主题的第一篇系列文章,这次给大家分享下Android端SQLite的"食用指南" ...

  3. android实现mysql数据库存储_一个简单的Android端对象代理数据库系统的实现(二、执行+存储)...

    这是我之前在武汉大学彭智勇老师那边做过的一个对象代理数据库系统.文中给出了一整个系统的几乎所有代码,经测试可正常运行.文章比较长,超出了知乎的最长文章范围,因此分为两篇文章.这是第二篇. 执行 执行部 ...

  4. Android 中短信数据库的简单操作

    Android APK操作短信数据时,不能使用SQLHelper直接操作,需要使用协议,协议使用Uri转义 content://sms/inbox         收件箱  content://sms ...

  5. android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...

    一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...

  6. pinyin4j 使用 -android端的简单实践

    pinyin4j 使用 -android端的简单实践 pinyin4j的主页:http://pinyin4j.sourceforge.net/ pinyin4j是一个支持将中文转换到拼音的Java开源 ...

  7. JMessage Android 端开发详解

    JMessage Android 端开发详解 目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 ...

  8. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    本文由"猫爸iYao"原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能  ▲ Q ...

  9. 独家食用指南系列|Android端SQLCipher的攻与防新编

    大家好,今天给大家的是本周技术拆解官的第二篇文章,主题依然是沿用上一篇文章的主题–Android端SQLite的"食用指南",上篇文章我们讲到了基本的SQLite的定义.使用方法以 ...

最新文章

  1. 机器学习——深度学习(Deep Learning)经典资料
  2. PXC管理数据库服务器(引擎)
  3. 问卷星作答能不能检测到屏幕共享_云端检测,别样精彩——大厂回族自治县王必屯中心小学线上期末检测纪实...
  4. git如何强制用远程分支更新本地
  5. java怎么输出9 99的形式_java如何输出99乘法表
  6. mysqlclient==1.3.7对应mysql版本_「MySQL」CentOs 7 下安装MySQL
  7. python对象点方法_python面向对象知识点疏理
  8. SpringBoot2 整合Kafka组件,应用案例和流程详解
  9. 修正《用Docker快速搭建Go开发环境》文章中的一处错误
  10. 腾讯广告算法大赛 | 第一周周冠军心得分享
  11. 蔺永华:虚拟化你的大数据应用
  12. 如何在游标里控制条件_如何在冰冻条件下保护控制球阀?
  13. win10c盘扩容_三招给你的C盘瘦身
  14. css内联样式---动态绑定背景图片
  15. Windows 序列号查看
  16. DNA甲基化芯片专题
  17. 服务器系统如何克隆,服务器如何克隆操作系统
  18. 《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上二)
  19. VisionPro软件笔记
  20. org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connec

热门文章

  1. 使用NGUI模仿制作“切水果”
  2. 思迅软锁安装配置说明
  3. MySQL(八):InnoDB 日志缓冲区(Log Buffer)
  4. linux宝塔关闭防火墙,宝塔控制面板如何关闭防火墙
  5. 电脑硬盘主分区和逻辑分区的区别是什么
  6. 微信网页小游戏网站源码带后台+可后台添加游戏+推荐到微信
  7. PC版微信加密图片解密思路与代码实现_Python
  8. 微信加密数据解密报错-41003
  9. osi模型:七层模型介绍_什么是OSI(开放系统互连)模型?
  10. Flutter 1.17版本重磅发布