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 ...
随机推荐
- lr文件下载脚本(文件参数化重命名)
http://wenku.baidu.com/link?url=6oiIadyF9eFS4VshKbfJDnxrBh2IX919ndi0JO8yoqTRNRNIpavFrZJ9LPVb-FBSfbRY ...
- lua解析赋值类型代码的过程
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" ...
- 从零开始编写自己的C#框架(22)——添加普通列表页面
普通列表页面指的是上一章那种有层次感列表以外的正常列表页面,由于上一章已讲解了正常添加页面的相关操作了,所以部分相关的操作本章节就不再罗嗦重复一次了.大家可以试试先用本章内容中的一些简单介绍,自己使用 ...
- EasyUI中那些不容易被发现的坑——EasyUI重复请求2次的问题
问题控件:datagrid.combobox.所有能设置url属性的控件 问题版本:1.4.4.1.4.5(之前的版本没测) 问题如图: 重复请求2次,错误代码如图: 错误问题分析:html加载的时候 ...
- android 视频录制 混淆打包 之native层 异常的解决
原文地址:http://www.cnblogs.com/linguanh/ (滑至文章末,直接看解决方法) 问题起因: 前5天,因为项目里面有个类似 仿微信 视频录制的功能, 先是上网找了个 开 ...
- spring boot(六):如何优雅的使用mybatis
*:first-child{margin-top: 0 !important}.markdown-body>*:last-child{margin-bottom: 0 !important}.m ...
- URI编码解码和base64
概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...
- 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程
本文记录了打PSU的全过程,意在体会数据库打PSU补丁的整个过程. 1.OPatch替换为最新版本2.数据库软件应用19121551补丁程序3.数据库应用补丁4.验证PSU补丁是否应用成功 1.OPa ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- 使用WampServer环境,如何配置虚拟主机域名
很多人不会配置虚拟主机,我这里简单交一下大家,分三步: 1.在 C:\Windows\System32\drivers\etc 文件夹中的文件 Hosts 文件修改代码为: 127.0.0.1 loc ...