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 ...
随机推荐
- ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署
本文借鉴http://www.cnblogs.com/gossip/p/5977489.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 ...
- SqlService过期的解决方案
看图吧,不喜欢说话,图里面我都打备注了 0SQLService异常 1找到安装中心 2升级版本 3监测ing 4输入升级key 5同意并下一步 6下一步 7下一步 8下一步 9收工 10可以打开了
- Apply Newton Method to Find Extrema in OPEN CASCADE
Apply Newton Method to Find Extrema in OPEN CASCADE eryar@163.com Abstract. In calculus, Newton’s me ...
- UploadFile控件,提交图片后,页面预览显示刚刚提交的图片
最近在用asp.net来写一个新闻系统后台,然后由于不用用网上的flash插件来上传图片什么的,我就用asp.net的控件来写,但是控件总归有一些用的不够灵活的地方.这次测试提出,文章在修改的时候,需 ...
- 【Python五篇慢慢弹(4)】模块异常谈python
模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...
- SQL Tuning 基础概述07 - SQL Joins
N多年之前,刚刚接触SQL的时候,就被多表查询中的各种内连接,外连接,左外连接,右外连接等各式各样的连接弄的晕头转向. 更坑的是书上看到的各种表连接还有两种不同的写法, 比如对于表A,表B的查询 1, ...
- Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。
在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origs ...
- TCP初始化序列号ISN
TCP初始化序列号ISN TCP初始化序列号不能设置为一个固定值,因为这样容易被攻击者猜出后续序列号,从而遭到攻击. RFC1948中提出了一个较好的初始化序列号ISN随机生成算法. ISN = M ...
- Asp.Net Core 项目实战之权限管理系统(6) 功能管理
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- LINQ to SQL语句(8)之Concat/Union/Intersect/Except
适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db ...