一个小小的demo,希望能帮到大家
1.首先创建数据库
DatabaseHelper.java
package com.example.login;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DatebaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "login.db";
private static final int DATABASE_VERSION = 1;
、、创建数据库
public DatebaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
//创建数据库表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table username( id varchar(10) primary key AUTOINCREMENT, name varchar(30), password varchar(30))");
}
//添加数据
public void addData(SQLiteDatabase sqLiteDatabase, String name, String password) {
ContentValues values = new ContentValues();
values.put("name", name);
values.put("password", password);
sqLiteDatabase.insert("user", null, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
MainActivity.java
package com.example.login;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final String DATABASE_NAME = "login.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "username";
private SQLiteDatabase db;
private Button btn_l, btn_r;
private EditText nameText, passText;
private Intent intent;
public MainActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatebaseHelper databaseHelper = new DatebaseHelper(MainActivity.this, DATABASE_NAME, null, DATABASE_VERSION);
db = databaseHelper.getWritableDatabase();
nameText = findViewById(R.id.username);
passText = findViewById(R.id.password);
btn_l = findViewById(R.id.login);
btn_r = findViewById(R.id.register);
btn_r.setOnClickListener(v -> {
intent = new Intent(MainActivity.this, RegisterActivaty.class);
startActivity(intent);
});
btn_l.setOnClickListener(new LoginListener());
}
private class LoginListener implements View.OnClickListener {
@Override
public void onClick(View v) {
String nameString = nameText.getText().toString();
String passString = passText.getText().toString();
if ("".equals(nameString) || "".equals(passString)) {
Toast.makeText(MainActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
} else {
isUserinfo(nameString, passString);
}
}
}
private void isUserinfo(String name, String pass) {
String passString = pass;
try {
@SuppressLint("Recycle") Cursor cursor = db.query(TABLE_NAME, new String[]{"name", "password"}, "name=?", new String[]{name}, null, null, "password");
while (cursor.moveToNext()) {
@SuppressLint("Range") String password = cursor.getString(cursor.getColumnIndex("password"));
cursor.close();
if (passString.equals(password)) {
new AlertDialog.Builder(MainActivity.this).setTitle("正确")
.setMessage("成功登录").setPositiveButton("确定", (dialog, which) -> {
// TODO Auto-generated method stub
Intent a = new Intent(MainActivity.this, MainActivity.class);
startActivity(a);
}).show();
break;
} else {
Toast.makeText(this, "用户名密码不正确", Toast.LENGTH_LONG).show();
break;
}
}
} catch (SQLiteException e) {
CreatTable();
}
}
private void CreatTable() {
String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME
+ " (name varchar(30) primary key,password varchar(30));";
try {
db.execSQL(sql);
} catch (SQLException ignored) {
}
}
}
注册实现 RegisterActivity.java
package com.example.login;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/**
* @author ts
*/
public class RegisterActivaty extends Activity {
private EditText edittext1, edittext2, edittext3;
private DatebaseHelper databaseHelper;
private static final String DATABASE_NAME = "login.db";
private static final int DATABASE_VERSION = 1;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_register);
databaseHelper = new DatebaseHelper(RegisterActivaty.this, DATABASE_NAME, null, DATABASE_VERSION);
db = databaseHelper.getReadableDatabase();
edittext1 = findViewById(R.id.username);
edittext2 = findViewById(R.id.editview2);
edittext3 = findViewById(R.id.password);
Button button = findViewById(R.id.tijiao);
button.setOnClickListener(v -> {
String namestring = edittext1.getText().toString();
String passstring = edittext2.getText().toString();
String repassstring = edittext3.getText().toString();
submit(namestring, passstring, repassstring);
});
}
//判空
private void submit(String namestring, String passstring, String repassstring) {
if (TextUtils.isEmpty(namestring)) {
Toast.makeText(this, "用户名不能为空", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(passstring)) {
Toast.makeText(this, "密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(repassstring)) {
Toast.makeText(this, "确认密码不能为空", Toast.LENGTH_SHORT).show();
return;
}
if (!notexistSameName(namestring)) {
Toast.makeText(this, "用户名已存在", Toast.LENGTH_SHORT).show();
} else if (passstring.equals(repassstring)) {
db.execSQL("insert into username (name,password) values(?,?)", new String[]{namestring, passstring});
Toast.makeText(RegisterActivaty.this, "注册成功!", Toast.LENGTH_LONG).show();
Intent b = new Intent(RegisterActivaty.this, MainActivity.class);
startActivity(b);
} else {
Toast.makeText(RegisterActivaty.this, "两次密码不一致", Toast.LENGTH_LONG).show();
}
}
//通过查询数据库判断用户名是否存在
private boolean notexistSameName(String name) {
Cursor cursor = db.query("username", new String[]{"name"}, "name = ?", new String[]{name}, null, null, null);
if (cursor.getCount() == 0) {
cursor.close();
return true;
} else {
cursor.close();
return false;
}
}
}
效果图