android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓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
实现了用户登录注册的功能!
http://www.cnblogs.com/xiaobo-Linux/(小波)赵存档QQ463431476 个人原创代码,不会的可以问我。
因为建立的数据库里面的数据没有判断数据的唯一性,所以在代码中实现了数据唯一性的判断。实现登录注册代码设计主要是在插入数据和查找数据的基础上做一个用户名是否存在,或者用户名和用户密码是否输入正确、输入错误的判断。
代码中定义一个标示判断 用户名是否存在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不好使,如果你能够实现就回复一下吧!
android安卓Sqlite数据库实现用户登录注册的更多相关文章
- swing 实现用户登录注册界面(不使用数据库)
swing 实现用户登录注册界面(不使用数据库) 实现的功能 先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功: 登录和注册界面: 本次实验分 ...
- flask 开发用户登录注册功能
flask 开发用户登录注册功能 flask开发过程议案需要四个模块:html页面模板.form表单.db数据库操作.app视图函数 1.主程序 # app.py # Auther: hhh5460 ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- Android实现SQLite数据库联系人列表
Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- python实现用户登陆(sqlite数据库存储用户信息)
python实现用户登陆(sqlite数据库存储用户信息) 目录 创建数据库 数据库管理 简单登陆 有些地方还未完善. 创建数据库 import sqlite3 #建一个数据库 def create_ ...
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
随机推荐
- Android 学习资源
下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android ...
- WCF学习之旅—基于ServiceDebug的异常处理(十七)
WCF学习之旅—WCF中传统的异常处理(十六) 二.基于ServiceDebug的异常处理 从前面的示例中,可以看到客户端捕获了异常,这是我们处理异常的前提.为了有利于我们进行有效的调试,WCF提供了 ...
- Oozie分布式任务的工作流——邮件篇
在大数据的当下,各种spark和hadoop的框架层出不穷.各种高端的计算框架,分布式任务如乱花般迷眼.你是否有这种困惑!--有了许多的分布式任务,但是每天需要固定时间跑任务,自己写个调度,既不稳定, ...
- 逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等
目录: 一. iOS 如何做才安全 二.ipa文件 三.沙盒 中的数据 四.Reveal:查看 任何APP 的UI结构 五.反编译工具:IDA 六.反编译工具:Hopper Disassembler ...
- Django:手把手带你入门
一.开发环境: Python:2.7:PyCharm 4 二.Django的安装: 打开Pycharm --> 新建项目--> 看图操作--> 自动安装Django环境 三.创建第一 ...
- 1元搭建自己的云服务器&解析域名
最近在学做微信开发,没有自己的域名和服务器就不得不寄人篱下,索性自己就到云主机上搭建了个服务器,但是水平有限弄了一个下午~~有自己的域名和服务器的好处相信不用我多说了.比如日后可以有自己域名的个性博客 ...
- How to implement equals() and hashCode() methods in Java[reproduced]
Part I:equals() (javadoc) must define an equivalence relation (it must be reflexive, symmetric, and ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- 把UI图里的小图标制作成icon font
一个交互比较多的UI图里面可能会有很多小图标,一般可用sprites图将多个小图标弄成一张大图,或者其它的办法,各种方法的比较可参见博主的另外一篇博客使用css3新属性clip-path制作小图标,本 ...
- [WinForm] DataGridView 绑定 DT && ComboBox 列绑定 Dict
一 需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面 ...