2

を使用してパスワードを取得するアクセス制御プログラムを Java で作成していますJPasswordField。このjpasswordfield.getPassword()メソッドは値を char として返すため、 を使用して char 値を MYSQL データベースに保存する方法を知る必要がありますpreparedstatementpassword char[100]パスワードの保存にMYSQL フィールドを使用しています。

助けてください。

4

2 に答える 2

0

プリペアド ステートメントを使用してデータベースに char 配列を格納する簡単な例を作成しました。MySQL の代わりに Java DB を使用しました。Java DB は JDK (jdk1.7.0/db/lib/derby.jar) に含まれているため、この例では問題になりません。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Example {
    public static void main(String[] args) throws SQLException {
        try (Connection connection = DriverManager.getConnection("jdbc:derby:memory:sampleDB;create=true");
             Statement statement = connection.createStatement()
        ) {
            char[] pw = "password".toCharArray();
            statement.execute("create table sample(pw char(10))");

            try (ResultSet resultSet = statement.executeQuery("select * from sample");
                 PreparedStatement preparedStatement = connection.prepareStatement("insert into sample values (?)")
            ) {
                for (int i = 1; i <= 10; i++) {
                    preparedStatement.setString(1, new String(pw) + i);
                    preparedStatement.execute();                    
                }

                while (resultSet.next()) {
                    System.out.println(resultSet.getString(1));
                }
            }
        }
    }
}

他の人が言ったように、パスワードをプレーンテキストでデータベースに保存しないでください。代わりに、そのハッシュを保存する必要があります ( Java の SHA-1 Hash )。

于 2012-04-09T10:37:40.413 に答える
0

いくつかのパスワード暗号化アルゴリズムを使用してパスワードを保存します。詳細については、Google で検索することをお勧めします。

于 2012-04-05T07:20:26.617 に答える