android安卓Sqlite数据库实现用户登录注册

简介: 看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public class MySqliteHelper extends SQLiteOpenHelper {...

看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!
建立一个类 并继承SQLiteOpenHelper

public class MySqliteHelper extends SQLiteOpenHelper { public MySqliteHelper(Context context) { super(context, "userdb.db", null, 3); // TODO Auto-generated constructor stub } 

 

在oncreate()函数中建立表

public void onCreate(SQLiteDatabase db) {  
    // TODO Auto-generated method stub  

    db.execSQL("create table users(id int primary key ,name text,pwd text)"); } 

在方法中建立db文件

  public void onCreate(SQLiteDatabase db) { 

    db.execSQL("create table users(id integer primary key ,name text,pwd text)");  

     String sql = "insert into users values (0,0,0)"; //id 自增加  
     db.execSQL(sql);  

}  

整体代码:

package zcd.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class MySqliteHelper extends SQLiteOpenHelper {


    public MySqliteHelper(Context context) {
        super(context, "userdb.db", null, 3);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

        db.execSQL("create table users(id integer primary key ,name text,pwd text)");

         String sql = "insert into users values (0,0,0)"; //id 自增加
         db.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

然后在自己另外一个类中实现数据库表的增删改查。 
我用的是Fragment,用Activity的话吧getActivity()去掉,换成this 
实现了用户登录注册的功能!

因为建立的数据库里面的数据没有判断数据的唯一性,所以在代码中实现了数据唯一性的判断。实现登录注册代码设计主要是在插入数据和查找数据的基础上做一个用户名是否存在,或者用户名和用户密码是否输入正确、输入错误的判断。 
代码中定义一个标示判断 用户名是否存在int userflag 定义一个登录时判断用户和密码是否输入正确的标识int loginflag 
注册时先判断用户名是否存在,userflag=1不存在此用户可以插入数据,userflag=0此用户存在跳出循环。 
登录时loginflag为1用户登录成功,loginflag为0出现用户名或者密码输入错误的提示。

具体代码:

自己看,写的很详细了。

这里用了安卓5.0的沉浸式操作栏,可以忽略去掉,看主要的部分啊!!

package zcd.sqlite;



import zcd.main.MainActivity;
import zcd.netanything.R;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class Userlogin extends Activity implements  OnClickListener{


       private MySqliteHelper helper;

       Button sign;  
       Button reg;

       String  name;
       String  mypwd;
       private EditText user;
       private EditText pwd;
       int userflag ;//定义一个标示判断 用户名是否存在
       int loginflag ;//登录时判断用户密码是否输入正确
   public void onCreate(Bundle savedInstanceState) {  
       super.onCreate(savedInstanceState);
       //设置状态栏颜色 
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
       getWindow().setStatusBarColor(getResources().getColor(R.color.StatusBar));   
       //设置actionbar颜色 
       ActionBar actionBar = getActionBar();
       actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0099CC")));
       setContentView(R.layout.login);

       findViewById(R.id.button1).setOnClickListener(this);
       findViewById(R.id.button2).setOnClickListener(this);
       user = (EditText)findViewById(R.id.editText1);
       pwd=(EditText)findViewById(R.id.editText2);

   }  


 public void  insert()
 {


      helper = new MySqliteHelper(getApplicationContext());
      SQLiteDatabase db=helper.getWritableDatabase();    //建立打开可读可写的数据库实例



      //查询一下,是否用户名重复
       String sql1 = "select * from users";
       Cursor cursor = db.rawQuery(sql1, null);
       while (cursor.moveToNext()) {
          //第一列为id
          name =  cursor.getString(1); //获取第2列的值,第一列的索引从0开始
          mypwd = cursor.getString(2);//获取第3列的值

          if((user.getText().toString().isEmpty())||(pwd.getText().toString().isEmpty())){

                 Toast.makeText(this, "不能为空,请重新输入", Toast.LENGTH_SHORT).show();  
                 break;
          }


          userflag = 1;  //不存在此用户


          if((user.getText().toString().equals(name)))
             {
                    Toast.makeText(this, "已存在此用户,请重新注册", Toast.LENGTH_SHORT).show();


                     userflag =0;
                     break;
             }

      }

      if(userflag==1)
      {
         String sql2 = "insert into users(name,pwd) values ('"+user.getText().toString()+"','"+pwd.getText().toString()+"')";
         db.execSQL(sql2);
         Toast.makeText(this, "注册成功!", Toast.LENGTH_SHORT).show(); 
      }  





        }


  public void select()
 {

      helper = new MySqliteHelper(getApplicationContext());
      SQLiteDatabase db=helper.getWritableDatabase();

      String sql = "select * from users";

      Cursor cursor = db.rawQuery(sql, null);
      while (cursor.moveToNext()) {
          //第一列为id
          name =  cursor.getString(1); //获取第2列的值,第一列的索引从0开始
          mypwd = cursor.getString(2);//获取第3列的值



           if((user.getText().toString().equals(name))&&(pwd.getText().toString().equals(mypwd)))
             {
                    Toast.makeText(this, "用户验证成功", Toast.LENGTH_SHORT).show(); 
                     loginflag=1;

                    //intent bundle传值
                    Intent MainActivity = new Intent();
                    MainActivity .setClass(this,MainActivity.class);
                    Bundle bundle = new Bundle(); //该类用作携带数据    
                    bundle.putString("user", user.getText().toString()); 
                    MainActivity.putExtras(bundle);   //向MainActivity传值
                    this.startActivity(MainActivity); 
                    finish();//退出

             }


      }

      if((user.getText().toString().isEmpty())||(pwd.getText().toString().isEmpty())){

         Toast.makeText(this, "不能为空,请重新输入", Toast.LENGTH_SHORT).show();  
     }


          if(loginflag!=1)
          {
             Toast.makeText(this, "账号或者密码错误,请重新输入", Toast.LENGTH_SHORT).show();  
          }

                cursor.close();
                db.close();
                //Toast.makeText(this, "已经关闭数据库", Toast.LENGTH_SHORT).show();  
      }



@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
       switch(v.getId()){  
        case R.id.button1:  
            select();

            break;  
        case R.id.button2:  
            insert();
            break;  
         }

}


}  

效果如下: 
这里写图片描述

默认是插入0,0,0然后再插入数据后id号就自动增加了. 
这是我的方法,不过写autoincreatement SQLite3不好使,如果你能够实现就回复一下吧!

 

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
751 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
1119 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
1463 8
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1980 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
1018 0
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
771 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
615 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
1008 14
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
768 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
851 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡

热门文章

最新文章