0
mysql dbから1行を取得したいと思います。しかし、私のプログラムはdbからすべての行を出力します。私は何が間違っているのか分かりません。私たちを手伝ってくれますか?ArrayListはデータベースからのすべての結果を表示します
public class ScreenBalance {
// show all records
public static ArrayList<String> showOnScreenBalance() throws Exception {
LoginVerification.login();
try {
Connection con = ConnectionDB.getConnection();
PreparedStatement statement = con.prepareStatement("SELECT ClientID, Money FROM BankDB.Info");
ResultSet result = statement.executeQuery();
ArrayList<String> array = new ArrayList<String>();
System.out.print("\nID\t\tAmount\t\n");
while (result.next()) {
System.out.print(result.getString("ClientID"));
System.out.print("\t");
System.out.print(result.getString("Money"));
System.out.print("\t");
array.add(result.getString("Money"));
}
System.out.println();
return array;
} catch (Exception e) {
System.out.println(e);
}
return null;
}
以下は、私が1つの行を選択することを望んでいた私の2番目のクラスです。しかし、正常に動作しません。私はclientID +クライアントのパスワードを入力しているので、なぜ私のメソッド 'showOnScreenBalance'はそれを見ないのですか?
public class LoginVerification {
private static boolean loggedIn = false;
public static void login() throws Exception {
System.out.println("ATM Machine v 1.0, Welcome user.");
if(loggedIn){
//do nothing, user already logged in
return;
}
Scanner input = new Scanner(System.in);
System.out.println("Please enter USER ID:");
String userId = input.nextLine();
System.out.println("Please enter PIN CODE:");
String pass = input.nextLine();
try {
Connection con = ConnectionDB.getConnection();
String sql = "SELECT COUNT(*) FROM Info WHERE ClientID = ? AND ClientPass = ?";
PreparedStatement posted = con.prepareStatement(sql);
posted.setString(1, userId);
posted.setString(2, pass);
ResultSet resultSet = posted.executeQuery();
resultSet.next();
int rowCount = resultSet.getInt(1);
if (rowCount == 1) {
loggedIn = true;
System.out.println("LOGIN SUCCESSFUL");
Helper.showMainMenu();
} else {
loggedIn = false;
System.out.println("#LOGIN UNSUCCESSFUL, WRONG LOGIN OR PASSWORD");
System.out.println("\nTry again? \n1) yes \n2) no [quit]");
int choice = input.nextInt();
if (choice == 1) {
login();
} else {
System.exit(0);
}
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
このクエリは、テーブル内のすべての行を選択します。何が起こると思いますか? – Kayaman
2番目のクラスは、(ファーストクラスの)変数を2番目のクラスに渡していないため、その変数を表示しません。メソッド 'showOnScreenBalance(String userid)'を作成し、それをwhere句で使用して、正しいユーザーの残高を選択することができます。 – Kayaman
うわーありがとう、それは私が探しているものです:)あなたは私のshowOnScreenBalanceメソッドを修正していただけますか? – damianm