Android——登錄邏輯實現

在這裏插入圖片描述

 


MD5算法 Message-Digest Algorithm 5(信息–摘要算法)
Message
Digest
MessageDigest
MessageDigest.getInstance( );
因爲註冊登陸涉及密碼,咱們須要對用戶的密碼進行 MD5 算法加密,
MD5 算法是把任意長度的字符串變成固定長度(一般是128位)的16進制字符串,
且此算法不可逆。
具體代碼以下:css

當點擊登陸按鈕時,需判斷用戶名和密碼是否爲空。java

若爲空,則提示請輸入用戶名或密碼,
若不爲空,則獲取用戶輸入的用戶名,
因爲用的是本地數據,須要根據用戶名在 SharedPreferences 中查詢是否有對應的密碼,
如有對應的密碼且與用戶輸入的密碼(需經過 MD5 加密)比對一致狀況,則登陸成功算法

點擊登陸,查詢服務器數據庫,匹配則登陸,
進入一個新頁面顯示登陸信息,不匹配則顯示登陸失敗。sql

結構設計

  • Android 用於與用戶交互,信息的輸入與顯示。
  • 阿里雲服務器,Tomcat Web應用服務器
    使用原生Servlet完成APP與服務器的交互。
  • MySql數據庫 用於數據的存儲與匹配。
    在這裏插入圖片描述
    數據庫的操做,使用的是DBUtils框架

一、 給app分配網絡訪問的權限
二、 啓動頁面(LoginActivity)爲登陸頁面
三、 Helloword頁面(MainActivity)爲登陸成功的跳轉頁面
四、 輸入的帳號密碼正確則跳轉,不然不跳轉
五、 使用Intent實現頁面的跳轉
六、 使用httpclient發送登陸的異步請求
七、 AndroidManifest配置文件裏面添加登陸頁面的activity
八、 開發登陸接口,對app客戶端發送的登陸請求進行處理數據庫

添加httpclient框架和fastjson框架的依賴
在這裏插入圖片描述json


SQLite 是一個開源的嵌入式關係數據庫,它能夠減小應用程序管理數據的開銷 ,
SQLite 可移植性好 、 很容易使用 、 很小 、 高效並且可靠 。
目前在Android 系統中集成的是 SQLite3 版本 ,
SQLite 不支持靜態數據類型 , 而是使用列關係 。
這意味着它的數據類型不具備表列屬性 , 而具備數據自己的屬性 。
當某個值插入數據庫時, SQLite 將檢查它的類型。
若是該類型與關聯的列不匹配,則 SQLite 會嘗試將該值轉換成列類型。
若是不能轉換,則該值將做爲其自己具備的類型存儲。
SQLite 支持 NULL 、INTEGER 、 REAL 、 TEXT 和 BLOB 數據類型。例如:能夠在 Integer 字段中存放字符串,
或者在布爾型字段中存放浮點數,或者在字符型字段中存放日期型值。可是有一種例外,
若是你的主鍵是 INTEGER ,那麼只能存儲 6 4位整數 ,
當向這種字段中保存除整數之外的數據時, 將會產生錯誤 。
另外 ,
SQLite 在解 析REATE TABLE語句時,
會忽略 CREATE TABLE 語句中跟在字段名後面的數據類型信息。服務器


SQLite 的特色網絡

SQlite數據庫總結起來有五大特色:app

  1. 零配置

SQlite3不用安裝、不用配置、不用啓動、關閉或者配置數據庫實例。
當系統崩潰後不用作任何恢復操做,在下次使用數據庫的時候自動恢復。框架

  1. 可移植

它是運行在 Windows 、 Linux 、BSD 、 Mac OS X 和一些商用 Unix 系統, 好比 Sun 的 Solaris 、IBM 的 AIX ,一樣,它也能夠工做在許多嵌入式操做系統下,好比 Android 、 QNX 、VxWorks、 Palm OS 、 Symbin 和 Windows CE 。

  1. 緊湊

SQLite是被設計成輕量級、自包含的。一個頭文件、一個 lib 庫,你就可使用關係數據庫了,不用任何啓動任何系統進程。

  1. 簡單

SQLite有着簡單易用的 API 接口。

  1. 可靠

SQLite的源碼達到 100% 分支測試覆蓋率。


Android 提供的 SQLiteOpenHelper.java 是一個抽象類。
那麼咱們要使用它,必須本身寫一個類來繼承它

public class DatabaseHelper extends SQLiteOpenHelper{

接下來須要寫一個
帶所有參數的DatabaseHelper類的構造函數,
之後生成數據庫對象的時候要用到:

static String name="user.db";  
    static int dbVersion=1;
//帶所有參數的構造函數,此構造函數必不可少
    public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

爲了實現對數據庫版本進行管理, SQLiteOpenHelper 類提供了兩個重要的方法
分別onCreate(SQLiteDatabasedb) 和
onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion)
用於初次使用軟件時生成數據庫表,
後者用於升級軟件時更新數據庫表結構。


//只在建立的時候用一次   
    public void onCreate(SQLiteDatabase db) {  
        String sql="create table user(id integer primary key autoincrement,username varchar(20),password varchar(20),age integer,sex varchar(2))";  
        db.execSQL(sql);  
    }  
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  
    }

SQLiteDatabase.execSQL(String sql) 能夠用來執行非查詢 SQL 指令,這些指令沒有結果
包括: CREATE TABLE / DROP TABLE / INSERT 等等
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

相關文章
相關標籤/搜索