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 ...
随机推荐
- Bootstrap3系列:输入框组
1. 基本实例 通过在文本输入框 <input> 前面.后面或是两边加上文字或按钮,实现对表单控件的扩展. .input-group包含.input-group-addon给 .form- ...
- .Net中的RealProxy实现AOP
序言 这个AOP要从我们公司的一个事故说起,前段时间公司的系统突然在乌云中出现,数据被泄露的一览无余,乌云上显示是SQL注入攻击.呵,多么贴近生活的一个露洞,可谓是人尽皆知啊.然而却华丽丽的给拉我们一 ...
- OpenCASCADE Job - Shoe Doctor
鞋博士 鞋博士经过8年沉淀,在鞋类工业4.0全流程平台上积累了相当的技术实力,获投资商亲睐. 新的一年,在投资商协助下,将踏上新的征途,因此诚邀您加盟顶层技术合伙人. 如果您具备以下实力,我们期待您的 ...
- js和jquery实现简单的选项卡
选项卡切换在做网页的时候经常会用到,以往都是用JQ来实现,代码简单易懂,今天用原生的js实现了一下,二者还是有很大不同的,可以对比一下代码来研究一下. <!DOCTYPE html> &l ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(24)-权限管理系统-将权限授权给角色
系列目录 过了个年回来,回顾一下,我们上次讲了角色管理,我们这一次来讲将权限授权给角色,这一节也是大家比较关心的.因为我们已经跑通了整个系统,知道权限的流转,我们先来看一张图 这张图主要分要3块,角色 ...
- [C#] 走进异步编程的世界 - 在 GUI 中执行异步操作
走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5877042.html 序 这是继<开始接 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- 浅析MySQL复制
MySQL的复制是基于binlog来实现的. 流程如下 涉及到三个线程,主库的DUMP线程,从库的IO线程和SQL线程. 1. 主库将所有操作都记录到binlog中.当复制开启时,主库的DUMP线程根 ...
- OCP考点实战演练02-日常维护篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...
- markdown常用语法总结
转自markdown示例[模板] 1.1.段落标题 根据原文中的文档标题可以对应设置标题. # 一级标题## 二级标题### 三级标题 效果 => 一级标题 二级标题 三级标题 1.2.斜体.加 ...