请问下面修改数据库和SharedPreferences数据的代码哪里有问题,一运行到这里app就关闭。
布局是有三个EditText,一个按钮。
点击按钮后将数据库和SharedPreferences的账号、昵称、密码修改成EditText里的数据。
希望有人指导一下,感谢
// DBHelper里有用户数据表table_Accounts,存放了_id,账号,昵称,密码
// 还有另一个表table_AccountFigure,也涉及账号
DBHelper dbHelper = new DBHelper(this);
// SharedPreferences存放了当前登录的账号,昵称,密码
SharedPreferences sp = getSharedPreferences("LoginSp", Context.MODE_PRIVATE);
String Acc = sp.getString("account",null);//存储当前账号
if(v.getId() == R.id.mi_buttonConfirm) {//点击按钮事件响应
// 获取EditText里的账号、昵称、密码
String acc = mi_acc.getText().toString();
String na = mi_na.getText().toString();
String pwd = mi_pwd.getText().toString();
// 检查修改后的账号是否已存在
SQLiteDatabase dbread = dbHelper.getReadableDatabase();
String sql = "select * from "+DBHelper.table_Accounts+" where account="+acc;
Cursor cursor = dbread.rawQuery(sql,null);
int flag = cursor.getCount();
dbread.close();
if(!Acc.equals(acc) && flag != 0) {// 该账号已存在
Toast.makeText(getBaseContext(),"该账号已存在,请重新修改",Toast.LENGTH_SHORT).show();
}
else {
// 修改数据库
SQLiteDatabase dbwrite = dbHelper.getWritableDatabase();
String sql1 = "update "+DBHelper.table_Accounts+" set account="+acc+",name="+na+",password="+pwd+" where account="+Acc;
dbwrite.execSQL(sql1);
String sql2 = "update "+DBHelper.table_AccountFigure+" set account="+acc+" where account="+Acc;
dbwrite.execSQL(sql2);
dbwrite.close();
// 修改LoginSp
SharedPreferences.Editor editor = sp.edit();
editor.putString("account",acc);editor.putString("name",na);
editor.putString("password",pwd);
editor.commit();
// 跳转其他Activity
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
第85行代码是:dbwrite.close();