我正在尝试使用Java在oracle数据库中更新我的密码。难道我做错了什么?

时间:2015-04-06 01:46:46

标签: java database

  

即使单击按钮更改密码,运行模拟器时也没有出现任何错误。我已经尝试过我能想到的一切,如果我做错了什么,有人知道吗。

@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();
    }

}

1 个答案:

答案 0 :(得分:0)

你不会得到任何异常,因为你在更新中有一个catch all语句,你完全忽略了忽略update的返回值!

修复后执行以下操作:

  • 确保while循环中的代码正在执行

  • 检查executeUpdate的返回值是否大于0

  • 不熟悉这种更改密码的SQL语法,您试过吗? 直接在控制台中运行它?

以及一些建议:

  • 您不需要查询,因为您没有使用它的结果集。

  • 永远不要使用ID。请改用用户名。

  • 关闭连接

  • 永远不会捕获所有异常。如果这样做,永远不要忽略抛出异常的时间。