を使用してパスワードを取得するアクセス制御プログラムを Java で作成していますJPasswordField
。このjpasswordfield.getPassword()
メソッドは値を char として返すため、 を使用して char 値を MYSQL データベースに保存する方法を知る必要がありますpreparedstatement
。password char[100]
パスワードの保存にMYSQL フィールドを使用しています。
助けてください。
を使用してパスワードを取得するアクセス制御プログラムを Java で作成していますJPasswordField
。このjpasswordfield.getPassword()
メソッドは値を char として返すため、 を使用して char 値を MYSQL データベースに保存する方法を知る必要がありますpreparedstatement
。password char[100]
パスワードの保存にMYSQL フィールドを使用しています。
助けてください。
プリペアド ステートメントを使用してデータベースに 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 )。
いくつかのパスワード暗号化アルゴリズムを使用してパスワードを保存します。詳細については、Google で検索することをお勧めします。