1. 程式人生 > >Android與SQLite——實現簡單登入

Android與SQLite——實現簡單登入

基礎部分,具體步驟,沒有分層,是自己寫在印象筆記裡的,俗簡勿噴。

有些地方明白意思但是寫不好,全是自己的理解,專業名詞詞彙量不是很足,主要看程式碼吧。

搭建安卓專案就不廢話了,需要一個登入介面,介面的搭建可以從簡,通過兩個EditText和一個Button即可,登入成功後可能需要一個跳轉介面,也可以通過Toa顯示。

java檔案至少需要兩個,一個是頁面的,一個是資料庫的。

現在開始:

1.建立資料庫類SQLiteHelper,繼承SQLiteOpenHelper.

     1.1 重寫構造方法。其中context指使用頁面(哪用哪寫),name指資料庫名稱,factory指遊標(一般為null),version指資料庫版本(為正整數)。           eg:
public SQLiteHelper(Context context, String name, CursorFactory factory,int version) {
             super(context, name, factory, version);
             // TODO Auto-generated constructor stub
         }

     1.2引數過於繁多可以進行過載           eg:
public SQLiteHelper(Context context, String name){
             super(context,name,null,VSRSION);
        }

     1.3可以使用private static int VSRSION = 1;定義版本號,      1.4使用回撥函式,在其中使用execSQL和資料庫語句建立資料庫。           eg:
public void onCreate(SQLiteDatabase db) {
             // TODO Auto-generated method stub
            db.execSQL( "CREATE TABLE USER(USERID NUMBER(8,0) PRIMARY KEY ,USERNAME VARCHAR2(20),PASSWORD VARCHAR2(20))");
}

2.搭建登入檢視介面,並搭建完成對應的java檔案。 3.切換至java檔案中      3.0           eg: 
private SQLiteHelper dphelper;
          eg: 
private Button btnlogin;
     3.1控制元件例項化           eg:
btnlogin =(Button)findViewById(R.id.bt_login);
     3.2資料庫例項化           eg:
dphelper =new SQLiteHelper(LoginActivity.this, "mydb" );//(本頁面,“定義的資料庫名稱”)
     3.3將按鈕繫結監聽器           eg:
btnlogin .setOnClickListener(new ViewOCL());
     3.4建立內部類,完成view點選監聽           eg:
class ViewOCL implements View.OnClickListener{
             SQLiteDatabase db;
             @Override
             public void onClick (View vi) {
                  switch(vi.getId()){
                  case R.id.bt_login :
                  db= dphelper.getReadableDatabase();//這裡我們是測試登入,不作修改刪除,所以使用readable
                  String u=username.getText().toString();//獲取EditText控制元件值
                  String p=password.getText().toString();
                  Cursor cur=db.rawQuery("select * from USER where USERNAME=? and PASSWORD=?", new String[]{u,p});
                  //將控制元件獲取的值與資料庫中的進行對比*自己理解去寫才看的懂*
                  if(cur.moveToNext()){
                      intent=new Intent(LoginActivity.this ,IndexActivity.class);
                      startActivity( intent);
                  } else{
                 Toast. makeText(getApplicationContext(), "使用者名稱或密碼錯誤", Toast.LENGTH_LONG ).show();
                  }
                  db.close();
                  break;

     3.5完成其他控制元件的監聽事件 4.在執行過程3的時候因資料庫沒有值,所以我們需要使用cmd命令列進行資料插入。      4.1執行cmd,輸入adb shell,如果正常顯示則繼續4.2,不能正常顯示請看4.1.1           4.1.1輸入adb shell,顯示“XX不是系統的命令列”,解決方法:找到sdk資料夾,複製其中的platform-tools資料夾路徑,然後將路徑值輸入到環境變數中的path中。           4.1.2輸入adb shell,顯示“error:device offline”,解決方法:本錯誤時指虛擬機器執行,我們只要將程式進行Run或者開啟虛擬機器。           4.1.3輸入過程中,如果出現命令視窗卡頓,沒有反應,可以重啟adb或者命令列視窗。      4.2在上一步執行正常後我們可以繼續如下操作,如果已經十分熟悉,可以連續操作無需檢視。           4.2.1輸入cd data(進入目錄中的data資料夾),回車。           4.2.2輸入cd data(進入目錄中的data資料夾,不是重複,而是data資料夾中還有一個叫data的資料夾),回車。           4.2.3輸入cd com.xxxx.xxx(這裡輸入自己的專案包名,如果不記得或者不確定可以輸入"ll"檢視),回車。           4.2.4輸入cd databases(進入自己專案中的資料包),回車。           4.2.5這時我們要保證自己的專案在虛擬機器上已經執行到相應介面,只差點一下"登入"按鈕的程度。因為要讓其執行至呼叫構造方法,保證資料庫已經通過程式自動建立完畢。                  這樣我們才能通過輸入"ll"看到自己的資料庫名mydb等。           4.2.6輸入sqlite3 mydb回車。可能會有報錯,不用管。           4.2.7輸入.schema回車,這時如果程式正確,並且執行到了登入頁面,我們就能看到自己在資料庫類中寫的建立資料庫表的語句,確保一定的有的情況下繼續。           4.2.8直接輸入SQL語句(插入資料,方便登入測試):insert into USER(USERID,USERNAME,PASSWORD) values ('01','admin','123');不要忘記分號。