使用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();
}''
整個邏輯為這樣,希望能對你有用,在細節方面,若有錯誤,還望指正