使用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);
            }
        });
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值