Android與SQLite——實現簡單登入
阿新 • • 發佈:2019-01-03
基礎部分,具體步驟,沒有分層,是自己寫在印象筆記裡的,俗簡勿噴。
有些地方明白意思但是寫不好,全是自己的理解,專業名詞詞彙量不是很足,主要看程式碼吧。
搭建安卓專案就不廢話了,需要一個登入介面,介面的搭建可以從簡,通過兩個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:3.3將按鈕繫結監聽器 eg:dphelper =new SQLiteHelper(LoginActivity.this, "mydb" );//(本頁面,“定義的資料庫名稱”)
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');不要忘記分號。