一:创建保存用户名称与密码的实体类User
package com.example.test;
public class User {
String name;
String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
二:创建DatabaseHelper继承自SQLiteOpenHelper
package com.example.test;
import android.annotation.SuppressLint;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
public class DBOpenHelper extends SQLiteOpenHelper {
private SQLiteDatabase db;
public DBOpenHelper(Context context) {
super(context, "quinto", null, 1);
db = getReadableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name TEXT," +
"password TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS user");
onCreate(db);
}
// 增
public boolean add(String name, String password){
boolean isSuccess = false;
try {
db.execSQL("INSERT INTO user (name, password) VALUES(?, ?)",new Object[]{name, password});
isSuccess = true;
} catch (SQLException e) {
e.printStackTrace();
}
return isSuccess;
}
// 删
public boolean delete(String name, String password){
boolean isSuccess = false;
try {
db.execSQL("DELETE FROM user WHERE name = '" + name + "' AND password = '" + password + "'");
isSuccess = true;
} catch (SQLException e) {
e.printStackTrace();
}
return isSuccess;
}
// 改
public boolean update(String password){
boolean isSuccess = false;
try {
db.execSQL("UPDATE user SET password = ?",new Object[]{password});
isSuccess = true;
} catch (SQLException e) {
e.printStackTrace();
}
return isSuccess;
}
// 查
public ArrayList<User> query(){
ArrayList<User> list = new ArrayList<>();
Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");
while(cursor.moveToNext()){
@SuppressLint("Range") String name = cursor.getString(cursor.getColumnIndex("name"));
@SuppressLint("Range") String password = cursor.getString(cursor.getColumnIndex("password"));
list.add(new User(name,password));
}
cursor.close();
return list;
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
// 禁用wal
db.disableWriteAheadLogging();
}
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
// 禁用wal
db.disableWriteAheadLogging();
}
}
execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法用于执行select语句。
查询语句:select * from 表名 where 条件
插入语句:insert into 表名(字段列表) values(值列表)
更新语句:update 表名 set 字段名=值 where 条件
删除语句:delete from 表名 where 条件
三:登陆 LoginActivity(查询)
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.util.List;
public class LoginActivity extends AppCompatActivity{
private EditText editName;
private EditText editPwd;
private DBOpenHelper dbOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
dbOpenHelper = new DBOpenHelper(LoginActivity.this);
editName = findViewById(R.id.edit_name);
editPwd = findViewById(R.id.edit_pwd);
}
/**
* 登录(查询)
* @param view
*/
public void Login(View view) {
String Name = editName.getText().toString().trim();
String Pad = editPwd.getText().toString().trim();
if (TextUtils.isEmpty(Name) || TextUtils.isEmpty(Pad)) {
Toast.makeText(LoginActivity.this, "账号或密码不能为空", Toast.LENGTH_LONG).show();
} else {
List<User> list = dbOpenHelper.query();
boolean isSuccess = false;
for (User user: list) {
if(Name.equals(user.getName()) && Pad.equals(user.getPassword())){
isSuccess = true;
}
}
if (isSuccess) {
editName.setText("");
editPwd.setText("");
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("root", Name);
intent.putExtra("password", Pad);
startActivity(intent);
} else {
Toast.makeText(LoginActivity.this, "账号或密码错误", Toast.LENGTH_LONG).show();
}
}
}
/**
* 跳转注册界面
* @param view
*/
public void Register(View view) {
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
}
}效果:




四:注册 RegisterActivity(查询、增)
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.util.List;
public class RegisterActivity extends AppCompatActivity{
private EditText edit_name;
private EditText edit_pwd;
private EditText edit_pwd2;
private DBOpenHelper dbOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
dbOpenHelper = new DBOpenHelper(RegisterActivity.this);
edit_name = findViewById(R.id.edit_name);
edit_pwd = findViewById(R.id.edit_pwd);
edit_pwd2 = findViewById(R.id.edit_pwd2);
}
/**
* 注册(查询、增)
* @param view
*/
public void Register(View view) {
String Name = edit_name.getText().toString().trim();
String Pwd = edit_pwd.getText().toString().trim();
String Pwd2 = edit_pwd2.getText().toString().trim();
if (TextUtils.isEmpty(Name) || TextUtils.isEmpty(Pwd) || TextUtils.isEmpty(Pwd2)) {
Toast.makeText(RegisterActivity.this, "账号和密码不能为空", Toast.LENGTH_SHORT).show();
} else {
List<User> list = dbOpenHelper.query();
boolean isSuccess = false;
for (User user: list) {
if(Name.equals(user.getName())){
isSuccess = true;
}
}
if (isSuccess) {
Toast.makeText(RegisterActivity.this, "该用户已存在", Toast.LENGTH_LONG).show();
} else {
if (Pwd.equals(Pwd2)) {
if (dbOpenHelper.add(Name, Pwd)) {
Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_LONG).show();
finish();
} else {
Toast.makeText(RegisterActivity.this, "注册失败", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(RegisterActivity.this, "两次密码输入不一致", Toast.LENGTH_LONG).show();
}
}
}
}
/**
* 返回
* @param view
*/
public void Back(View view) {
finish();
}
}效果:





五:注销 MainActivity(删)
package com.example.test;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity{
DBOpenHelper openHelper;
String root;
String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
openHelper = new DBOpenHelper(MainActivity.this);
root = getIntent().getStringExtra("root");
password = getIntent().getStringExtra("password");
}
/**
* 跳转修改密码界面
* @param view
*/
public void Update(View view) {
Intent intent = new Intent(MainActivity.this, ChangeActivity.class);
intent.putExtra("password", password);
startActivity(intent);
}
/**
* 注销(删)
* @param view
*/
public void Logout(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("!!!");
builder.setMessage("确定注销账号吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (openHelper.delete(root, password)) {
Toast.makeText(MainActivity.this, "注销成功", Toast.LENGTH_LONG).show();
finish();
} else {
Toast.makeText(MainActivity.this, "注销失败", Toast.LENGTH_LONG).show();
}
}
});
builder.setNegativeButton("取消", null);
AlertDialog dialog = builder.create();
dialog.show();
}
/**
* 退出
* @param view
*/
public void Back(View view) {
finish();
}
}效果:



六:修改密码 ChangeActivity(改)
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class ChangeActivity extends AppCompatActivity {
private EditText old_paw;
private EditText new_paw1;
private EditText new_paw2;
private String password;
private DBOpenHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change);
old_paw = findViewById(R.id.old_paw);
new_paw1 = findViewById(R.id.new_paw1);
new_paw2 = findViewById(R.id.new_paw2);
helper = new DBOpenHelper(ChangeActivity.this);
password = getIntent().getStringExtra("password");
}
/**
* 修改密码(改)
* @param view
*/
public void Confirm(View view) {
String paw1 = old_paw.getText().toString().trim();
String paw2 = new_paw1.getText().toString().trim();
String paw3 = new_paw2.getText().toString().trim();
if (TextUtils.isEmpty(paw1) || TextUtils.isEmpty(paw2) || TextUtils.isEmpty(paw3)) {
Toast.makeText(ChangeActivity.this, "密码不能为空", Toast.LENGTH_LONG).show();
} else {
if (!password.equals(paw1)) {
Toast.makeText(ChangeActivity.this, "您输入的旧密码错误,请重新输入", Toast.LENGTH_LONG).show();
old_paw.setText("");
} else {
if (!paw2.equals(paw3)) {
Toast.makeText(ChangeActivity.this, "您两次输入的新密码不一致,请重新输入", Toast.LENGTH_LONG).show();
new_paw1.setText("");
new_paw2.setText("");
} else {
if (helper.update(paw2)) {
Toast.makeText(ChangeActivity.this, "修改成功", Toast.LENGTH_LONG).show();
finish();
} else {
Toast.makeText(ChangeActivity.this, "修改失败", Toast.LENGTH_LONG).show();
}
}
}
}
}
/**
* 返回
* @param view
*/
public void Back(View view) {
finish();
}
}效果:






七:导入sql文件
/**
* 导入sql文件
* @param sqlName sql文件名称
* @param context 上下文对象
* @param sqlPlan 接口回调
*/
public void importSql(String sqlName, Context context, SqlIntentPlan sqlPlan) {
DBOpenHelper helper = new DBOpenHelper(context);
SQLiteDatabase db = helper.getWritableDatabase();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(context.openFileInput(sqlName)));
String str;
int allLine = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(context.openFileInput(sqlName)));
while ((str = reader.readLine()) != null) {
allLine++;
}
int readLineNum = 0;
StringBuffer buffer = new StringBuffer("");
while ((str = bufferedReader.readLine()) != null) {
readLineNum++;
if (str.indexOf("<html>") > -1) {
sqlPlan.onSqlFailed("服务器连接失败,请选择正确的服务器!");
return;
} else {
buffer.append(str);
if (str.indexOf("; --") > -1) {
db.execSQL(buffer.toString());
buffer = new StringBuffer("");
sqlPlan.SqlPlan(readLineNum * 100 / allLine);
}
}
}
db.close();
sqlPlan.onSqlSuccess(1);
} catch (IOException e) {
sqlPlan.onSqlFailed("文件导入错误!");
Log.e("db-error", e.toString());
return;
} catch (SQLException e) {
sqlPlan.onSqlFailed("导入数据错误!" + e.toString());
Log.e("db-error", e.toString());
return;
}
}
public interface SqlIntentPlan {
// 导入进度
void SqlPlan(int a);
// 导入成功
void onSqlSuccess(int b);
// 导入异常
void onSqlFailed(String e);
}版权声明:本文为Qxnedy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。