一. 整体设计
三个界面 :
LoginActivity (登陆界面)---------------->RegisterActivity(注册界面) 如果 没有用户名,与数据无关
-----------------> SucActivity(登录成功界面) 如果有用户名,与数据库有关,看数据 库中是不是有这个 人的信息。
数据库设计:
ID key Age
Name Sex
Password Hobby
先创建数据库SQLiteOpenHelper,在第一次创建 时会新建用户数据表。
二。 数据库设计
public class DatabaseHelper extends SQLiteOpenHelper{
final static String DATABASENAME="my_database.db";
final static int VERSION = 1;
final static String TABLENAME="userInfo_detail";
final static String ID= "id";
final static String NAME="name";
final static String SEX="sex";
final static String AGE= "age";
final static String HOBBY ="hobby";
final static String PASSWORD="password";
public DatabaseHelper(Context context) { //减少了构造函数的参数,在类中定义 ,使用更方便,耦合度低
super(context, DATABASENAME, null, VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "CREATE TABLE "+
TABLENAME+"("+
ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
NAME+" TEXT, "+
PASSWORD+" TEXT, "+
SEX+" TEXT, "+
AGE+" TEXT, "+
HOBBY+" TEXT); ";
db.execSQL(sql);
}
@Override
public void onOpen(SQLiteDatabase db) {
// TODO Auto-generated method stub
super.onOpen(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
三 .LoginActivy设计
整体架构
loginBtn.setOnClickListener(new OnClickListener(){ //如果有号,就直接登录,到SucActivity
public void onClick(View arg0) {
}
});
registerBtn.setOnClickListener(new OnClickListener(){ //没有号,到RegisterActivity
public void onClick(View arg0) {
Intent registerIntent= new Intent(getBaseContext(), RegisterActivity.class);
startActivity(registerIntent);
}
});
loginBtn中比较复杂。
(1) 得到数据库操作对象
(2) 从输入中得到name和password。
(3) 在数据库中找用户名,如果没有,则提示不存在这个 用户,如果 有这个 用户,再进行密码 对比。用户名不能相同 。
(4) 如果 密码 对比 也对,则到注册成功界面 ,如果密码 不对,则提示密码错误 。
loginBtn.setOnClickListener(new OnClickListener(){ //如果有号,就直接登录,到SucActivity
public void onClick(View arg0) {
//先通过帮助类得到数据库操作对象
DatabaseHelper helper = new DatabaseHelper (getBaseContext());
db= helper.getReadableDatabase(); //通过 helper得到可以写的数据库
//得到输入 的信息
name = name_in.getText().toString();
pass = pass_in.getText().toString();
//根据用户名查询数据库信息
Cursor cursor = db.query(DatabaseHelper.TABLENAME, new String [] {DatabaseHelper.PASSWORD},
DatabaseHelper.NAME+"=?", new String [] {name} , null, null, null);
//如果 没有查询到,则提示用户名不存在 ,
if (cursor.getCount()==0){
Toast.makeText(getBaseContext(), "用户名不存在", Toast.LENGTH_SHORT).show();
return;
}
//如果用户名存在,比较密码
cursor.moveToFirst();
//while (!cursor.isAfterLast()){}
String password = cursor.getString(0);
if(password.equals(pass)){
Intent sucIntent = new Intent (getBaseContext(), SucActivity.class);
sucIntent.putExtra("name", name);
startActivity(sucIntent);
}else{
Toast.makeText(getBaseContext(), "密码错误", Toast.LENGTH_SHORT).show();
}
}
});
四. 注册界面 设计
1 。 得到用户的输入信息
2. 得到数据库对象
3. 判断用户名是否存在, 不存在 ,则保存信息,如果 存在 ,则提示用户名已经 存在
4. 保存成功后,到登录成功界面
okBtn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
name = name_in.getText().toString();
pass = pass_in.getText().toString();
sex = sex_in.getText().toString();
age = age_in.getText().toString();
hobby = hobby_in.getText().toString();
//得到数据库对象
DatabaseHelper helper = new DatabaseHelper(getBaseContext());
db=helper.getWritableDatabase();
// 判断这个用户是否存在
Cursor c = db.query(DatabaseHelper.TABLENAME, new String []{DatabaseHelper.NAME},
DatabaseHelper.NAME+"=?", new String []{name}, null, null, null);
if (c.getCount()>0){ //查询结果 是用户名存在
Toast.makeText(getBaseContext(), "用户名存在 ", Toast.LENGTH_SHORT).show();
return ;
}
//如果 不存在 ,则插入数据
ContentValues values = new ContentValues ();
values.put(DatabaseHelper.NAME, name);
values.put(DatabaseHelper.PASSWORD, pass);
values.put(DatabaseHelper.AGE, age);
values.put(DatabaseHelper.SEX, sex);
values.put(DatabaseHelper.HOBBY, hobby);
db.insert(DatabaseHelper.TABLENAME, null, values);
Intent i = new Intent (getBaseContext(),SucActivity.class);
i.putExtra("name", name); //在SucActivity中用来 查询数据
startActivity(i);
}
});
}
五 。登录成功界面
两个功能
根据name 进行数据查询
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.suc_activity);
initView (); //如果 用来 initView(),则widget定义 成类变量
doQuery();
doShow();
goback.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Intent i = new Intent (getBaseContext(),LoginDemo.class);
startActivity(i);
}
});
}
显示用户的信息
private void doQuery() {
// TODO Auto-generated method stub
name = getIntent().getStringExtra("name");
DatabaseHelper helper = new DatabaseHelper(getBaseContext());
db=helper.getReadableDatabase();
//查询信息
String [] columns = new String []{
DatabaseHelper.PASSWORD,
DatabaseHelper.AGE,
DatabaseHelper.SEX,
DatabaseHelper.HOBBY
};
Cursor c = db.query(DatabaseHelper.TABLENAME, columns, DatabaseHelper.NAME+"=?",
new String[]{name}, null, null, null);
c.moveToFirst();
while(!c.isAfterLast()){
pass=c.getString(0);
age=c.getString(1);
sex=c.getString(2);
hobby=c.getString(3);
c.moveToNext();
}
}