即使单击按钮更改密码,运行模拟器时也没有出现任何错误。我已经尝试过我能想到的一切,如果我做错了什么,有人知道吗。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_account);
更改密码的按钮
Button password = (Button) findViewById(R.id.btnChangePassword);
password.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
update();
} catch (Exception e) {
e.printStackTrace();
}
}
});}
更新密码的方法
public Exception update()throws Exception{
Connection conn = null;
Statement st = null;
try {
conn = ConnectionManager.getConnection();
st = conn.createStatement();
String select_password = "SELECT * From Userinfo Where USERID = 5";
ResultSet Password = st.executeQuery(select_password);
String password = "UPDATE userinfo SET PASSWORD = ? WHERE USERID = 5";
while (Password.next()) {
PreparedStatement ps = null; //conn.prepareStatement(Update_Bank);
ps = conn.prepareStatement(password);
String pass = "password123";
ps.setString(1, pass);
ps.executeUpdate();
ps.close();
}
}catch(Exception e){
return e;
}
return null;
}}
好的,所以我改变了一些内容,然后我查看了代码,发现它在" ResultSet Password = st.executeQuery(select_password);"声明。事情是它在eclipse中工作但不在android工作室中。任何人都有任何想法?
Connection conn = null;
Statement st = null;
conn = ConnectionManager.getConnection();
st = conn.createStatement();
String select_password = "SELECT * From Userinfo Where USERID = 5";
ResultSet Password = st.executeQuery(select_password);
String password =( "UPDATE userinfo SET PASSWORD = ? WHERE USERID = 5");
while (Password.next()) {
PreparedStatement ps = conn.prepareStatement(password);
ps = conn.prepareStatement(password);
String pass = "password";
ps.setString(1, pass);
ps.executeUpdate();
ps.close();
}
}
答案 0 :(得分:0)
你不会得到任何异常,因为你在更新中有一个catch all语句,你完全忽略了忽略update的返回值!
修复后执行以下操作:
确保while循环中的代码正在执行
检查executeUpdate的返回值是否大于0
不熟悉这种更改密码的SQL语法,您试过吗? 直接在控制台中运行它?
以及一些建议:
您不需要查询,因为您没有使用它的结果集。
永远不要使用ID。请改用用户名。
关闭连接
永远不会捕获所有异常。如果这样做,永远不要忽略抛出异常的时间。