1

私はソフトウェアを開発しており、ユーザーを保存するためのフレームがあります。新しいユーザーフレームの保存からパスワードを取得するためのパスワードフィールドがあります。パスワードを保存するためにバイナリデータ型を選択しました。レコードを保存した後、ワークベンチから見て、パスワードフィールドには「BLOB」があります。ログインフレームを試してみました。しかし、うまくいきませんでした。暗号化方法は使用しませんでした。

私のクエリは次のとおりです。また、パスワードを保存する最良の方法を知りたいです。

    //get password from  password field in save user frame
    String password = txtUserPassword.getPassword().toString();

    /////////////////////////////////QUERY TO SAVE NEW USER////////////////////////////////////////////////////
    //query to save the new user
     "INSERT INTO user(username,fname,lname,password,contact,type,isDeleted) VALUES( '"+userName+"','"+fname+"','"+lname+"','"+password+"','"+contact+"','"+type+"','false' )"


    ///////////////////LOG IN FORM CODE/////////////////////////////////////////////////////////////////////

    //in Login form ,get the user name and password and check with database value
     String username = txtUsername.getText();
            String password = new String(txtPassword.getPassword());

    //take the values to result set
            ResultSet rst = DB_Access.getData("SELECT username,password FROM user   WHERE BINARY  username='"+username+"' AND BINARY   password =  '"+password+"'  ");




            // check user existing or not in the if condition

             if(rst.next())

            {
                 Guesrname = txtUsername.getText(); // this user name to pass the user name to next form
                this.dispose();
                Seller sellFrame = new Seller(Guesrname ); // next appearing form
                sellFrame.setVisible(true);
            }

            else 
            {
                JOptionPane.showMessageDialog(this, "Invalid user name or password");

            }
4

1 に答える 1

2

問題が 1 つあります。この行は正しくありません:

String password = txtUserPassword.getPassword().toString(); // returns something like"[C@12345"

後で、代わりに String コンストラクターを使用して正しく実行しますtoString

String password = new String(txtPassword.getPassword());

JPassword.getPassword() は非文字列を返しchar []ます。そして奇妙なことに、char 配列の toString メソッドは、文字配列のテキストを含む文字列を返しません。

パスワードを入力するコードを変更して、パスワードを使用してログインするコードのように機能させます。これでもっと近くなるはずです。

于 2012-12-10T17:33:24.223 に答える