sql >> データベース >  >> RDS >> Mysql

結果セットのnext()メソッドによる行のスキップの回避

    まず、そのようなSQLの構築を停止します-パラメーター化されたSQLとPreparedStatementを使用します 。現在のコードはSQLインジェクション攻撃に対して脆弱です。

    基本的に、rs.next()は呼び出さないでください 2回続けて(最初はif 次に、while )... whileを変換することで、簡単に行うことができます。 do/whileにループします ループ:

    if (rs.next()) {
        do {
            System.out.print(rs.getString("idUser") + " ,");
            System.out.print(rs.getString("Name") + " ,");
            System.out.print(rs.getString("Email") + " ,");
            System.out.println(rs.getString("country") + " .");
        } while (rs.next());
    }
    

    またはちょうど while ループ、あなたがいくつかを見たことを検出するための別の変数 結果:

    bool anyResults = false;
    while (rs.next()) {
        anyResults = true;
        System.out.print(rs.getString("idUser") + " ,");
        System.out.print(rs.getString("Name") + " ,");
        System.out.print(rs.getString("Email") + " ,");
        System.out.println(rs.getString("country") + " .");
    }
    if (!anyResults) {
        JOptionPane.showMessageDialog(null, "Not Found");
    }
    

    (さらに、try-with-resourcesを使用してResultSetを閉じる必要があります など、スタックトレースをstdoutに出力するだけでは、例外を処理する適切な方法はほとんどありません...)



    1. MySQL / MariaDBリレーショナルテーブル内の特定の親ノードのすべての子(およびその子)を取得する

    2. json_encodeの実行後に\r\ n(改行文字)を置き換える

    3. JDBCを使用したカスタムタイプの配列を使用したPostgresへのCSVコピー

    4. 複数のSQLファイルをMySQLデータベースに簡単にインポートするにはどうすればよいですか?