安卓登陆与注册

正常一个安卓应用必不可少的功能就是登录与注册了,今天我们说说android中登录&注册。

先理一下简单流程:

(一)SQLiteOpenHelper,进入APP后建库建表。

注册功能实现: 

注册功能非空校验,数据库添加数据,页面跳转的实现。

登录功能实现: 

登录功能非空校验,数据库查询数据,页面跳转的实现。

知识点:学习SQLite数据库知识。(可以参考第一行代码)


下面结合源代码看一步步如何实现:

自己编写类继承SQLiteOpenHelper,在里面写相应的建表语句,如:

  1. public static final String CREATE_USER = "create table User ("  
  2.         + "id integer primary key , "  
  3.         + "name text, "  
  4.         + "password text)"

重写onCreate(第一次建库时调用)、onUpgrade(升级时调用)方法。


在主类中生成自己刚才编写类的对象并初始化,建立数据库,如:


dbHelper = new MyDatabaseHelper(this"Meeting.db"null1);  

至此,完成建库建表操作。


非空校验又是如何实现?这里借助TextUtils类的isEmpty方法,方便快捷,如:

  1. String userName = userName_et_main.getText().toString();  
  2. if(TextUtils.isEmpty(userName)){  
  3.     Toast.makeText(getApplication(), "用户名不能为空!", Toast.LENGTH_SHORT).show();  
  4. }  
然后在数据库中查询数据,通过getWritableDatabase得到数据库,然后使用query方法,Cursor得到返回结果,之后通过moveToFirst、moveToNext进行遍历操作,如果相同通过Intent进行跳转,之后别忘记关闭Cursor哈,源代码如下:

  1. SQLiteDatabase db = dbHelper.getWritableDatabase();  
  2. Cursor cursor = db.query("User"nullnullnullnullnull,  
  3.         null);  
  4. if (cursor.moveToFirst()) {  
  5.     do {  
  6.         String nameCur = cursor.getString(cursor  
  7.                 .getColumnIndex("name"));  
  8.         String passwordCur = cursor.getString(cursor  
  9.                 .getColumnIndex("password"));  
  10.         int idCur = cursor.getInt(cursor  
  11.                 .getColumnIndex("id"));  
  12.         Log.d("ws:""nameCur-" + nameCur);  
  13.         Log.d("ws:""passwordCur-" + passwordCur);  
  14.         Log.d("ws:""idCur-" + idCur);  
  15.   
  16.         if(userName.equals(nameCur)&&passWord.equals(passwordCur)){  
  17.             Intent intent = new Intent();  
  18.             intent.setClass(MainActivity.this, ListActivity.class);  
  19.             startActivity(intent);  
  20.             break;  
  21.         }  
  22.     } while (cursor.moveToNext());  
  23. }  
  24. cursor.close();  


这样,一个使用SQLite的登录功能就成功了。


注册功能类似,不同之处是添加数据使用了insert方法和ContentValues类,直接贴源代码,就不详细描述了。

  1. import android.app.Activity;  
  2. import android.content.ContentValues;  
  3. import android.content.Intent;  
  4. import android.database.sqlite.SQLiteDatabase;  
  5. import android.os.Bundle;  
  6. import android.text.TextUtils;  
  7. import android.util.Log;  
  8. import android.view.View;  
  9. import android.widget.Button;  
  10. import android.widget.EditText;  
  11. import android.widget.Toast;  
  12.   
  13. import dbutils.MyDatabaseHelper;  

  14. public class RegistActivity extends Activity{  
  15.   
  16.     private Button regist_btn_regist;  
  17.     private EditText userName_et_regist;  
  18.     private EditText passWord_et_regist;  
  19.     private EditText id_et_regist;  
  20.     private MyDatabaseHelper dbHelper;  
  21.   
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.regist);  
  26.   
  27.         dbHelper = new MyDatabaseHelper(this"Meeting.db"null1);  
  28.         initView();  
  29.   
  30.         regist_btn_regist.setOnClickListener(new View.OnClickListener() {  
  31.             @Override  
  32.             public void onClick(View view) {  
  33.                 String userName = userName_et_regist.getText().toString();  
  34.                 String passWord = passWord_et_regist.getText().toString();  
  35.                 String id = id_et_regist.getText().toString();  
  36.   
  37.                 if(TextUtils.isEmpty(userName)){  
  38.                     Toast.makeText(getApplication(), "用户名不能为空!", Toast.LENGTH_SHORT).show();  
  39.                 }  
  40.                 if(TextUtils.isEmpty(passWord)){  
  41.                     Toast.makeText(getApplication(), "密码不能为空!", Toast.LENGTH_SHORT).show();  
  42.                 }  
  43.                 if(TextUtils.isEmpty(id)){  
  44.                     Toast.makeText(getApplication(), "工号不能为空!", Toast.LENGTH_SHORT).show();  
  45.                 }  
  46.   
  47.                 if(!TextUtils.isEmpty(userName)&&!TextUtils.isEmpty(passWord)&&!TextUtils.isEmpty(id)){  
  48.                     Log.d("ws-userName:",userName);  
  49.                     Log.d("ws-passWord:",passWord);  
  50.                     Log.d("ws-id:",id);  
  51.                       
  52.                     SQLiteDatabase db = dbHelper.getWritableDatabase();  
  53.                     ContentValues values = new ContentValues();  
  54.                     values.put("name", userName);  
  55.                     values.put("password", passWord);  
  56.                     values.put("id", id);  
  57.                     db.insert("User"null, values);  
  58.                     Log.d("ws:","db.insert succeed.");  
  59.                     values.clear();  
  60.   
  61.                     Intent intent = new Intent();  
  62.                     intent.setClass(RegistActivity.this, ListActivity.class);  
  63.                     startActivity(intent);  
  64.                 }  
  65.   
  66.             }  
  67.         });  
  68.     }  
  69.   
  70.     private void initView() {  
  71.         userName_et_regist = (EditText) findViewById(R.id.userName_et_regist);  
  72.         passWord_et_regist = (EditText) findViewById(R.id.passWord_et_regist);  
  73.         id_et_regist = (EditText) findViewById(R.id.id_et_regist);  
  74.         regist_btn_regist = (Button) findViewById(R.id.regist_btn_regist);  
  75.     }  



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值