Android SQLite 数据库修改密码功能实现
import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper( Context context) { super(context, 'studata.db', null, 1); }
@Override
public void onCreate(SQLiteDatabase db) {
//学生信息
String sql_student = 'create table student(' +
'id int primary key not null ,' +
'name varchar(20) not null,' +
'sex varchar(10) not null,' +
'age int check(age<100 and age>0),' +
'banji varchar(20) ,' +
'phone int ,' +
'college varchar(20) default '无',' +
'jidian int check(jidian>0 and jidian<5.0)) ';
//学生——登陆密码表
String sql_student_load = 'create table load_account(account int primary Key not null ,password varchar(20))';
//触发器
String sql_ctrigger = 'CREATE TRIGGER load_add AFTER INSERT ON student ' +
'BEGIN INSERT INTO load_account(account,password) VALUES (new.id,'123456'); END;';
String sql_trigger = 'CREATE TRIGGER delete_load BEFORE DELETE ON student BEGIN DELETE FROM load_account WHERE account =old.id ;END ; ';
String sql_trigger2 = 'CREATE TRIGGER student_load_change ' +
' AFTER UPDATE ON student BEGIN UPDATE load_account SET ACCOUNT = NEW.ID WHERE ACCOUNT = OLD.ID; END;';
db.execSQL(sql_student_load);
db.execSQL(sql_student);
db.execSQL(sql_ctrigger);
db.execSQL(sql_trigger);
db.execSQL(sql_trigger2);
//老师个人信息表
String sql_teacher = 'create table teacher(' +
'teacher_id int primary key not null,' +
'name varchar(20),' +
'sex varchar(20) check(sex = '男' or sex = '女'),' +
'age int check(age>0 and age<100),' +
'level varchar(20),' +
'phone int ,' +
'college varchar(20))';
//老师登录信息表
String sql_teacher_load = 'create table load_teacher(' +
'account int primary key not null ,' +
'password varchar(20))';
//触发器
String sql_ttrigger = 'CREATE TRIGGER load_add_teacher AFTER INSERT ON teacher ' +
'BEGIN INSERT INTO load_teacher(account,password) VALUES (new.teacher_id,'123456'); END;';
String sql_dttrigger = 'CREATE TRIGGER delete_teacher_load ' +
' BEFORE DELETE ON teacher BEGIN DELETE FROM load_teacher WHERE ACCOUNT = OLD.TEACHER_ID; END;';
String sql_dttrigger1 = 'CREATE TRIGGER teacher_load_change ' +
' AFTER UPDATE ON teacher BEGIN UPDATE load_teacher SET ACCOUNT = NEW.TEACHER_ID WHERE ACCOUNT = OLD.TEACHER_ID; END;';
db.execSQL(sql_teacher_load);
db.execSQL(sql_teacher);
db.execSQL(sql_ttrigger);
db.execSQL(sql_dttrigger);
db.execSQL(sql_dttrigger1);
//学生选课信息表
String sql_student_course = 'create table student_course(' +
'student_id int ,' +
'course_name varchar(20),' +
'teacher_name varchar(10),' +
'score int, ' +
'FOREIGN KEY(course_name) REFERENCES course(course_name),' +
'FOREIGN KEY(teacher_name) REFERENCES course(teacher_name)' +
')';
//课程信息表
String sql_course = 'create table course(' +
'teacher_name varchar(20) not null,' +
'course_name varchar(20) not null,' +
'course_weight SMALLINT ,' +
'course_time varchar(20),' +
'course_period varchar(20),' +
'primary key(teacher_name,course_name),' +
'FOREIGN KEY(teacher_name) REFERENCES teacher(name))';
db.execSQL(sql_course);
db.execSQL(sql_student_course);
//留言信息存储表
String sql_liuyan = 'create table message(' +
'student_id int primary key not null,' +
'message text)';
db.execSQL(sql_liuyan);
//管理员表
String sql_admin = 'create table administractor(' +
' account varchar(20),' +
' password varchar(20))';
String sql_insert_admin = 'insert into administractor values('WYH','123456')';
String sql_insert_admin2= 'insert into administractor values('zsl','123456')';
// String sql_insert_admin3= 'insert into administractor values('zml','123456')';
db.execSQL(sql_admin);
db.execSQL(sql_insert_admin);
db.execSQL(sql_insert_admin2);
// db.execSQL(sql_insert_admin3);
//个人资源配置表,比如更改图片之类的啦
String personal_resource = 'create table personal_resource(' +
'id int primary key not null ,' +
'IMAGE blob)';
db.execSQL(personal_resource);
//触发器
String personal_resource_trigger = 'CREATE TRIGGER personal_resource_trigger AFTER INSERT ON student ' +
'BEGIN INSERT INTO personal_resource(id,IMAGE) VALUES (new.id,null);END;';
String personal_resource_trigger1 = 'CREATE TRIGGER personal_resource_trigger_t AFTER INSERT ON teacher ' +
'BEGIN INSERT INTO personal_resource(id,IMAGE) VALUES (new.teacher_id,null);END;';
db.execSQL(personal_resource_trigger);
db.execSQL(personal_resource_trigger1);
//插入基本测试数据
String sql_insert1 = 'insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('李不才','电子线路基础',2,'周一上午','1')';
String sql_insert2 = 'insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('高光 刘三姐','大学英语4',4,'周五上午','1')';
String sql_insert3 = 'insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('魏丰年','数据库原理',3,'周三上午','1')';
String sql_insert4 = 'insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('张无银','数学模型',2,'周一晚上','1')';
String sql_insert5 = 'insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('司马长风','运筹学',2,'周三下午','1')';
String sql_insert6 = 'insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('忘年交','毛泽东思想概论',4.5,'周五晚上','1')';
db.execSQL(sql_insert1);
db.execSQL(sql_insert2);
db.execSQL(sql_insert3);
db.execSQL(sql_insert4);
db.execSQL(sql_insert5);
db.execSQL(sql_insert6);
//插入基本测试数据
String sql_p = 'insert into student(id ,name ,sex,age ,banji , phone, college )' +
' values(20171302028,'武媚娘','男',19,'17计科3班',188330,'网络空间安全与计算机学院')';
String sql_p1 = 'insert into student(id ,name ,sex,age ,banji , phone, college )' +
' values(20180301178,'梁山泊','女',20,'18新闻2班',188330,'新闻传播学院')';
String sql_p2 = 'insert into student(id ,name ,sex,age ,banji , phone, college )' +
' values(20171302029,'台浓','男',20,'17计科3班',188330,'网络空间安全与计算机学院')';
String sql_p3 = 'insert into student(id ,name ,sex,age ,banji , phone, college )' +
' values(20171302030,'王不悦','男',20,'17计科3班',188330,'网络空间安全与计算机学院')';
String sql_p4 = 'insert into student(id ,name ,sex,age ,banji , phone, college )' +
' values(20171302031,'霍元甲','男',20,'17材料2班',188330,'化学与环境科学学院')';
String sql_p5 = 'insert into student(id ,name ,sex,age ,banji , phone, college )' +
' values(20171102027,'王八蛋','男',20,'17材料2班',18812141604,'化学与环境科学学院')';
String sql_tp1 = 'insert into teacher(teacher_id ,name ,sex,age ,level , phone, college )' +
' values(2018,'魏忠贤','男',20,'高级教师',188330,'网络空间安全与计算机学院')';
String sql_tp = 'insert into teacher(teacher_id ,name ,sex,age ,level , phone, college )' +
' values(2017,'周八皮','男',19,'高级教师',188330,'网络空间安全与计算机学院')';
db.execSQL(sql_p);
db.execSQL(sql_tp);
db.execSQL(sql_p1);
db.execSQL(sql_p2);
db.execSQL(sql_p3);
db.execSQL(sql_p4);
db.execSQL(sql_p5);
db.execSQL(sql_tp1);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
} import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast;
public class load extends AppCompatActivity {
private String state = '';
private SQLiteDatabase db;
private SharedPreferences pref;
private SharedPreferences.Editor editor;
private CheckBox rememberPass;
private CheckBox jzmm;
private boolean isRemember;
private EditText edit_load_zhanghao;
private EditText edit_load_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_load);
DBOpenHelper dbhelper = new DBOpenHelper(this);
Button confirmbt=findViewById(R.id.button_load);
Button changebt = findViewById(R.id.button_change_password);
RadioButton administrator = findViewById(R.id.radiobutton_guanliyuan);
RadioButton studentrb = findViewById(R.id.radiobutton_xuesheng);
RadioButton teacherrb = findViewById(R.id.radiobutton_teacher);
CheckBox jzmm=findViewById(R.id.checkbox_remember);
EditText usernametx = findViewById(R.id.edit_load_zhanghao);
EditText pwdtx = findViewById(R.id.edit_load_password);
SQLiteDatabase readdb=dbhelper.getReadableDatabase();
changebt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent toinent=new Intent(load.this,xiugaiActivity.class);
startActivity(toinent);
Toast.makeText(load.this, '请修改密码', Toast.LENGTH_SHORT).show();
}
});
pref = PreferenceManager.getDefaultSharedPreferences(this);
editor = pref.edit();
isRemember = pref.getBoolean('remember_password', false);
// 初始化控件 rememberPass = findViewById(R.id.checkbox_remember); edit_load_zhanghao = findViewById(R.id.edit_load_zhanghao); edit_load_password = findViewById(R.id.edit_load_password);
// 设置记住密码的状态 rememberPass.setChecked(isRemember); if (isRemember) { // 如果记住密码,则将保存的账号和密码显示在输入框中 String account = pref.getString('account', ''); String password = pref.getString('password', ''); edit_load_zhanghao.setText(account); edit_load_password.setText(password); }
// 监听记住密码的勾选状态 rememberPass.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 将记住密码的状态保存到SharedPreferences中 editor.putBoolean('remember_password', isChecked); editor.apply(); } }); confirmbt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String account = edit_load_zhanghao.getText().toString(); String password = edit_load_password.getText().toString();
// 判断是否记住密码,如果记住密码,则保存账号和密码到SharedPreferences中 if (rememberPass.isChecked()) { editor.putString('account', account); editor.putString('password', password); } else { editor.remove('account'); editor.remove('password'); } editor.apply(); // 获取SharedPreferences实例
if (administrator.isChecked()){
Cursor adread = readdb.rawQuery('select * from administractor where account=''+usernametx.getText().toString()+''',null);
adread.moveToNext();
if(adread.getCount()<1){
Toast.makeText(load.this, '无此用户', Toast.LENGTH_SHORT).show();
}
else{ String getaccountname = adread.getString(0);
String getpwd = adread.getString(1);
if(getpwd.equals(pwdtx.getText().toString())){
Intent toinent=new Intent(load.this,administratorfrm.class);
startActivity(toinent);
Toast.makeText(load.this, '管理员登陆成功', Toast.LENGTH_SHORT).show();
// finish();
}
else {
Toast.makeText(load.this, '用户或密码不对', Toast.LENGTH_SHORT).show();
}
}
}
if (studentrb.isChecked()){
Cursor xs = readdb.rawQuery('select * from load_account where account=''+usernametx.getText().toString()+''',null);
xs.moveToNext();
if(xs.getCount()<1){
Toast.makeText(load.this, '无此用户', Toast.LENGTH_SHORT).show();
}
else{
String getaccountnames = xs.getString(0);
String xss = xs.getString(1);
if(xss.equals(pwdtx.getText().toString())){
Intent toinent=new Intent(load.this,administratorfrm.class);
startActivity(toinent);
Toast.makeText(load.this, '学生登陆成功', Toast.LENGTH_SHORT).show();
finish();
}
else {
Toast.makeText(load.this, '权限错误', Toast.LENGTH_SHORT).show();
}
}
}
if (teacherrb.isChecked()){
Cursor adreads = readdb.rawQuery('select * from load_teacher where account=''+usernametx.getText().toString()+''',null);
adreads.moveToNext();
if(adreads.getCount()<1){
Toast.makeText(load.this, '无此用户', Toast.LENGTH_SHORT).show();
}
else{ String getaccountnamess = adreads.getString(0);
String getpwdss = adreads.getString(1);
if(getpwdss.equals(pwdtx.getText().toString())){
Intent toinent=new Intent(load.this,administratorfrm.class);
startActivity(toinent);
Toast.makeText(load.this, '老师登陆成功', Toast.LENGTH_SHORT).show();
finish();
}
else{
Toast.makeText(load.this, '权限错误', Toast.LENGTH_SHORT).show();
}
}
}
}
});
}
} import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton;
public class xiugaiActivity extends AppCompatActivity { private EditText zhanghao ,yuanmima,xinmima,querenmima; private Button xiugai; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiugai); zhanghao = findViewById(R.id.edit_load_zhanghao);//账号 yuanmima = findViewById(R.id.edit_load_password);//原密码 xinmima = findViewById(R.id.xiugaiedit_load_password);//新密码 querenmima = findViewById(R.id.querenedit_load_password);//确认新密码 xiugai = findViewById(R.id.button_load); //修改密码 RadioButton administrator = findViewById(R.id.radiobutton_guanliyuan);//管理员 RadioButton studentrb = findViewById(R.id.radiobutton_xuesheng);//学生 RadioButton teacherrb = findViewById(R.id.radiobutton_teacher);//教师 DBOpenHelper dbhelper = new DBOpenHelper(this); SQLiteDatabase db=dbhelper.getWritableDatabase(); xiugai.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { String acc = zhanghao.getText().toString(); String oldpw = yuanmima.getText().toString(); String newpw = xinmima.getText().toString(); String confpw = querenmima.getText().toString();
if(administrator.isChecked()) {
if(acc.isEmpty() || oldpw.isEmpty() || newpw.isEmpty() || confpw.isEmpty()) {
Toast.makeText(xiugaiActivity.this, '请输入完整信息', Toast.LENGTH_SHORT).show();
return;
}
if (!newpw.equals(confpw)) {
Toast.makeText(xiugaiActivity.this, '两次密码输入不一致', Toast.LENGTH_SHORT).show();
return;
}
Cursor cursor = db.rawQuery('SELECT * FROM administractor WHERE account = ?', new String[]{acc});
if (cursor.moveToFirst()) {
String pwd = cursor.getString(cursor.getColumnIndex('password'));
if (pwd.equals(oldpw)) {
db.execSQL('UPDATE administractor SET password = ? WHERE account = ?', new String[]{newpw, acc});
Toast.makeText(xiugaiActivity.this, '密码修改成功', Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(xiugaiActivity.this, '原密码错误', Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(xiugaiActivity.this, '用户不存在', Toast.LENGTH_SHORT).show();
}
cursor.close();
} else if (studentrb.isChecked()) {
if(acc.isEmpty() || oldpw.isEmpty() || newpw.isEmpty() || confpw.isEmpty()) {
Toast.makeText(xiugaiActivity.this, '请输入完整信息', Toast.LENGTH_SHORT).show();
return;
}
if (!newpw.equals(confpw)) {
Toast.makeText(xiugaiActivity.this, '两次密码输入不一致', Toast.LENGTH_SHORT).show();
return;
}
Cursor cursor = db.rawQuery('SELECT * FROM load_account WHERE account = ?', new String[]{acc});
if (cursor.moveToFirst()) {
String pwd = cursor.getString(cursor.getColumnIndex('password'));
if (pwd.equals(oldpw)) {
db.execSQL('UPDATE load_account SET password = ? WHERE account = ?', new String[]{newpw, acc});
Toast.makeText(xiugaiActivity.this, '密码修改成功', Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(xiugaiActivity.this, '原密码错误', Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(xiugaiActivity.this, '用户不存在', Toast.LENGTH_SHORT).show();
}
cursor.close();
} else if (teacherrb.isChecked()) {
if(acc.isEmpty() || oldpw.isEmpty() || newpw.isEmpty() || confpw.isEmpty()) {
Toast.makeText(xiugaiActivity.this, '请输入完整信息', Toast.LENGTH_SHORT).show();
return;
}
if (!newpw.equals(confpw)) {
Toast.makeText(xiugaiActivity.this, '两次密码输入不一致', Toast.LENGTH_SHORT).show();
return;
}
Cursor cursor = db.rawQuery('SELECT * FROM load_teacher WHERE account = ?', new String[]{acc});
if (cursor.moveToFirst()) {
String pwd = cursor.getString(cursor.getColumnIndex('password'));
if (pwd.equals(oldpw)) {
db.execSQL('UPDATE load_teacher SET password = ? WHERE account = ?', new String[]{newpw, acc});
Toast.makeText(xiugaiActivity.this, '密码修改成功', Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(xiugaiActivity.this, '原密码错误', Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(xiugaiActivity.this, '用户不存在', Toast.LENGTH_SHORT).show();
}
cursor.close();
}
}
});
}
}
原文地址: https://www.cveoy.top/t/topic/pmuQ 著作权归作者所有。请勿转载和采集!