1. 程式人生 > >使用SQLite本地資料庫實現註冊登陸功能

使用SQLite本地資料庫實現註冊登陸功能

共3個頁面:註冊,確認,登陸。
註冊有兩種可能。1.使用者名稱已存在,提示更改使用者名稱(select語句) 2.註冊成功(insert語句)
登陸有兩種可能。(select語句)1.使用者名稱和密碼不匹配 2.登陸成功
操作步驟:

一、資料庫的準備工作MyDatabaseHelper.java

public class MyDatabaseHelper extends SQLiteOpenHelper {
    final String CREATE_TABLE_SQL = "create table userlist(_id integer primary key autoincrement,name,passwd,gender)"
; public MyDatabaseHelper(Context context, String name, int version) { super(context, name, null, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_SQL); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {} }

android自帶的資料庫SQLite有兩個非常重要的類。SQLiteOpenHelper,SQLiteDatabase。
在這段程式碼,新建一個數據庫,在資料庫裡新建一個表。

二、在用到資料庫的每一個.java中,先寫兩句話

MyDatabaseHelper dbHelper = new MyDatabaseHelper(register_index.this, "userlist.db", 1);
                SQLiteDatabase db = dbHelper.getReadableDatabase();

三、select語句和insert語句

select語句

 String sql = "select * from userlist where name='" + Name + "' and passwd='" + Passwd + "'";
 Cursor cursor = db.rawQuery(sql, null);
 if (!cursor.moveToNext()){}
 else{}

Name和Passwd是String型別,注意這裡必須寫成”+Name+”

insert語句

insertData(db, Name, Passwd, Gender);
private void insertData(SQLiteDatabase db, String name, String passwd, String gender) {
db.execSQL("insert into userlist values(null,?,?,?)", new String[]{name, passwd, gender});
    }

寫一個函式insertData。

四、還有2個補充。

第1,帶資料的跳轉。

傳送

                    Intent intent = new Intent(register_index.this, result.class);
                    Bundle data = new Bundle();
                    data.putString("name", Name);
                    data.putString("passwd", Passwd);
                    data.putString("gender", Gender);
                    intent.putExtras(data);
                    startActivity(intent);

分3步。1.new Bundle 2.放入資料putXXX 3.把bundle綁在intent上(putExtras)

接收

                Bundle data = getIntent().getExtras();
                String Name = data.getString("name");
                String Passwd = data.getString("passwd");
                String Gender = data.getString("gender");

分2步。1.得到intent,然後得到intent裡的bundle。2.得到bundle裡的資料(getXXX)。

第2,除錯經常用到Toast

Toast.makeText(register_index.this, "使用者名稱已存在,請更改使用者名稱!", Toast.LENGTH_SHORT).show();

附錄:
register.java

public class login extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        findViews();
        setListeners();
    }

    private EditText name;
    private EditText passwd;
    private Button login;
    private Button register;

    private void findViews() {
        name = (EditText) findViewById(R.id.name);
        passwd = (EditText) findViewById(R.id.passwd);
        login = (Button) findViewById(R.id.login);
        register = (Button) findViewById(R.id.register);
    }

    private void setListeners() {
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String Name = name.getText().toString().trim();
                String Passwd = passwd.getText().toString().trim();
                MyDatabaseHelper dbHelper = new MyDatabaseHelper(login.this, "userlist.db", 1);
                SQLiteDatabase db = dbHelper.getReadableDatabase();
                String sql = "select * from userlist where name='" + Name + "' and passwd='" + Passwd + "'";
                Cursor cursor = db.rawQuery(sql, null);
                if (!cursor.moveToNext())
                    Toast.makeText(login.this, "使用者名稱與密碼不匹配,請重新輸入!", Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(login.this, "登陸成功!", Toast.LENGTH_SHORT).show();

            }
        });
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(login.this, register_index.class);
                startActivity(intent);
            }
        });
    }
}

result.java

public class result extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        findViews();
        showResults();
        setListeners();
    }

    private TextView name;
    private TextView passwd;
    private TextView gender;
    private Button insert;

    private void findViews() {
        name = (TextView) findViewById(R.id.name);
        passwd = (TextView) findViewById(R.id.passwd);
        gender = (TextView) findViewById(R.id.gender);
        insert = (Button) findViewById(R.id.insert);

    }

    private void showResults() {
        Bundle data = getIntent().getExtras();
        name.setText("您的使用者名稱為:" + data.getString("name"));
        passwd.setText("您的密碼為:" + data.getString("passwd"));
        gender.setText("您的性別為:" + data.getString("gender"));
    }

    private void setListeners() {
        insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MyDatabaseHelper dbHelper = new MyDatabaseHelper(result.this, "userlist.db", 1);
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                Bundle data = getIntent().getExtras();
                String Name = data.getString("name");
                String Passwd = data.getString("passwd");
                String Gender = data.getString("gender");
                insertData(db, Name, Passwd, Gender);
                Toast.makeText(result.this, "註冊成功!", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(result.this, login.class);
                startActivity(intent);
            }
        });
    }

    private void insertData(SQLiteDatabase db, String name, String passwd, String gender) {
        db.execSQL("insert into userlist values(null,?,?,?)", new String[]{name, passwd, gender});
    }
}

login.java

public class login extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        findViews();
        setListeners();
    }

    private EditText name;
    private EditText passwd;
    private Button login;
    private Button register;

    private void findViews() {
        name = (EditText) findViewById(R.id.name);
        passwd = (EditText) findViewById(R.id.passwd);
        login = (Button) findViewById(R.id.login);
        register = (Button) findViewById(R.id.register);
    }

    private void setListeners() {
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String Name = name.getText().toString().trim();
                String Passwd = passwd.getText().toString().trim();
                MyDatabaseHelper dbHelper = new MyDatabaseHelper(login.this, "userlist.db", 1);
                SQLiteDatabase db = dbHelper.getReadableDatabase();
                String sql = "select * from userlist where name='" + Name + "' and passwd='" + Passwd + "'";
                Cursor cursor = db.rawQuery(sql, null);
                if (!cursor.moveToNext())
                    Toast.makeText(login.this, "使用者名稱與密碼不匹配,請重新輸入!", Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(login.this, "登陸成功!", Toast.LENGTH_SHORT).show();

            }
        });
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(login.this, register_index.class);
                startActivity(intent);
            }
        });
    }
}