(数据库)Android登录,注册界面简单实现。

时间:2022-11-13 13:11:51

本文使旨在用最简单的Demo来实现原理,有不足之处欢迎指出,多多包涵,大家一起交流~


1、一般兄弟们看这篇文章应该对数据库多少有些了解,简洁说SQL是Structured Query Language结构化查询语言的缩写。SQL是专为数据库而建立的操作命令集。数据库简单的说就是实行增,删,改,查的方法。

      今天我用数据库写了一个登录注册界面,仿的是ONE的登录界面


登录界面:

   (数据库)Android登录,注册界面简单实现。

注册界面:

(数据库)Android登录,注册界面简单实现。

然后建登录Activitty,注册Activity,分别在两个布局中写相关的布局控件,

大家所熟悉的接下来我们应该写OpenHelper继承SQLiteOpenHelper,建个db包 我建个studentdao类

然后在Helper里面创建数据库表,数据库版本号增加时候方法(onUpgrade 切记版本号只能增加不能减小),代码如下:

public class DbHelper extends SQLiteOpenHelper {

public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sql="create table student(id integer primary key autoincrement," +
"num integer(5),"+"name varchar(3))";
sqLiteDatabase.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

}
}


再说dbo,各个Activity都可以从dbo中调用里面的的方法:

因为我只需要插入数据和查询方法所以我只写了两个方法:

public class StudentDao {
Context context;
DbHelper dbHelper;
public StudentDao(Context context) {
this.context = context;
dbHelper=new DbHelper(context,"student.db",null,1);
}

// 往student表中 插入数据方法
public void insert(String num,String name){
// 获取数据库写的权限 一般都是更新
SQLiteDatabase sqLiteDatabase= dbHelper.getWritableDatabase();
String sql="insert into student(num,name)values(?,?)";
sqLiteDatabase.execSQL(sql,new String[]{num,name});
// ContentValues values=new ContentValues();
// values.put("num",num);
// values.put("name",name);
// sqLiteDatabase.insert("student",null,values);
// sqLiteDatabase.close();
}

// 查询数据库方法, 使用数据库读数据库权限的时候,不能调用sqLiteDatabase.close();
public Cursor query(String num,String name){
SQLiteDatabase sqLiteDatabase= dbHelper.getReadableDatabase();
String sql="select*from student where num=?and name=?";
return sqLiteDatabase.rawQuery(sql,new String[]{num,name});
}

一个是条件查询,一个是查询所有方法:



需要注意的是增调用的是getWriteDatabase();

  查询调用的是getRead。。。。()

然后我们在注册Activity调用 insert方法

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_login_zhuce);
login_zhuce_xiyibu= (Button) findViewById(R.id.login_zhuce_xiyibu);
login_zhuce_haoma= (EditText) findViewById(R.id.login_zhuce_haoma);
login_zhuce_duanxin= (EditText) findViewById(R.id.login_zhuce_duanxin);
studentdao = new StudentDao(this);


login_zhuce_xiyibu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String str1=login_zhuce_haoma.getText().toString();
String str11= login_zhuce_duanxin.getText().toString();
studentdao.insert(str1,str11);
Intent intent=new Intent(Login_zhuceActivity.this,Login_dengluActivity.class);

if(login_zhuce_haoma.getText().toString().length()==11){
Toast.makeText(Login_zhuceActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
startActivity(intent);
}else {
Toast.makeText(Login_zhuceActivity.this,"请输入正确的11手机号码",Toast.LENGTH_SHORT).show();

}


}
});

简单判断下号码位数。。想加更多判断条件的自行自行添加

接下来我们在登录Activity中写查询方法,因为需要判定我们用条件查询方法:

    login_denglu_denglu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(Login_dengluActivity.this, MainActivity.class);
Cursor cursor = studentdao.query(login_edithaoma.getText().toString().trim(), login_editmima.getText().toString().trim());
if (login_edithaoma.getText().toString().length()==11) {
if (cursor.moveToNext()) {
startActivity(intent1);
Toast.makeText(Login_dengluActivity.this, "登录成功", Toast.LENGTH_SHORT).show();

} else {
Toast.makeText(Login_dengluActivity.this, "您输入的账号或密码有误", Toast.LENGTH_SHORT).show();

}
}else {
Toast.makeText(Login_dengluActivity.this, "请输入正确11位手机号", Toast.LENGTH_SHORT).show();
}
}
});
login_zhuce_zhuce = (TextView) findViewById(R.id.login_zhuce_zhuce);
login_zhuce_zhuce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Login_dengluActivity.this, Login_zhuceActivity.class);
startActivity(intent);
String str1 = login_edithaoma.getText().toString();
String str2 = login_editmima.getText().toString();
studentdao.query(str1, str2);


// break;

}
});

也是简单判断下,判断和库中存储的账号。密码是否相等:

其实没太大难度,主要需要主要方法调用时小细节,和判断时的一些逻辑~

以上就实现了登录,注册功能,需要源码的可私信我,写的不足之处欢迎大家多包涵,指教,一起交流~