使用SQLite數據庫實現登陸注冊


使用SQLite數據庫實現登陸#

一.首先布局##

登陸只需要兩個EditText實現輸入賬號密碼加上一個Button,添加點擊事件,這就不貼代碼了
注冊也是如此

二.創建數據庫##

新建一個DBHelper 類用於創建數據庫
''public class DBHelper extends SQLiteOpenHelper{
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists info_user(_id integer primary key autoincrement,name_user varchar(20) not null," +
"pass_user varchar(20) not null);");
Log.d("DBhelper","create table ");
}

public DBHelper(Context context) {
    super(context, "info_user", null, 1);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table  if  exists info_user");
    Log.d("DBHelper","drop table");
    onCreate(db);

}

}''
代碼如上,
該類繼承SQLiteOpenHelper,需要實現兩個方法,onCreate()和onUpgrade()
onCreate(),創建數據庫
我是直接用SQL語言直接寫,不建議,可使用google的拼裝方法,該方法便於日后管理
db.exeSQL使用SQL語句來創建數據庫表info_user,並添加三個屬性_id,name_user,pass_user,_id為主鍵,為int類型並自增,另外兩個為字符型,長度20;
Log.d便於查看表是否創建或更新了
onUpgrade(),當數據庫版本發生改變時,調用此方法
db.exeSQL中SQL語言來實現刪除原表,然后再調用onCreate方法

三.創建一個實體類##

新建一個Bean類
''public class Bean {
private String name_user;
private String pass_user;

public String getName_user() {
    return name_user;
}

public void setName_user(String name_user) {
    this.name_user = name_user;
}

public String getPass_user() {
    return pass_user;
}

public void setPass_user(String pass_user) {
    this.pass_user = pass_user;
}

''
這邊就不贅述了,聲明變量,使用get()set()

四.創建一個Op工具類##

實現數據庫表的增刪改查
''
public class Op {

DBHelper dbHelper;
SQLiteDatabase db;

public Op(Context context){
dbHelper=new DBHelper(context);
}

public void open() throws SQLiteException {
    db = dbHelper.getWritableDatabase();
}

public void close() {
    db.close();
}

public void addbean(String name_user, String pass_user) {//添加數據
this.open();
ContentValues values = new ContentValues();
values.put("name_user", name_user);
values.put("pass_user", pass_user);
db.insert("info_user", null, values);
this.close();
}
public boolean login(String username,String password){
this.open();
String sql="select * from info_user where name_user=? and pass_user=?";
Cursor cursor=sdb.rawQuery(sql, new String[]{username,password});
if(cursor.moveToFirst()==true){
cursor.close();
this.close();
return true;
}
this.close();
return false;
}

}''
這邊主要是兩個方法一個是添加數據,另一個是登陸的查詢方法,都傳入兩個參數
第一個添加方法是google推薦的添加語句,也可以用SQL語句直接添加
第二個登陸查詢方法,返回ture|false

五.在登陸界面中調用方法##

'' public void login(){
final String username=edit_user.getText().toString();
final String userpass=edit_pass.getText().toString();
if(op.login(username, userpass) == true){
startActivity(new Intent(LoginActivity.this, HostActivity.class));
finish();
}else{
Toast.makeText(LoginActivity.this, "用戶名或密碼錯誤", Toast.LENGTH_LONG).show();
edt_pass.setText("");
}
}''

六.在注冊界面中調用方法##

''public void register() {
op.addbean(edt_name_rg.getText().toString(), edt_pass_rg.getText().toString());
Toast.makeText(RegisteActivity.this, "已注冊,將返回", Toast.LENGTH_SHORT);
startActivity(new Intent(RegisteActivity.this, LoginActivity.class));
finish();
}''
整個邏輯為這樣,希望能對你有用,在細節方面,若有錯誤,還望指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM