Heim  >  Fragen und Antworten  >  Hauptteil

Schreiben Sie den Titel um: Indem Sie die ID des ResultSet abrufen und als java.sql.Array zurückgeben

<p>Ich habe Folgendes:</p> <pre class="brush:scala;toolbar:false;"> def getIds(name: String): java.sql.Array = { Gültige IDs: Array[Integer] = Array() val ps: PreparedStatement = Connection.prepareStatement("SELECT id FROM table WHERE name = ?") ps.setString(1, Name) val resultSet = ps.executeQuery() while(resultSet.next()) { val currentId = resultSet.getInt(1) ids :+ aktuelleId } return Connection.createArrayOf("INTEGER", ids.toArray) } </pre> <p>Meine Absicht ist es, die Ausgabe dieser Methode in einem anderen PreparedStatement zu verwenden, indem ich <code>.setArray(1, <array>)</code></p> verwende. <p>Aber ich erhalte die folgende Fehlermeldung: <code>java.sql.SQLFeatureNotSupportedException</code></p> <p>Ich verwende MySQL. Habe INTEGER, INT, BIGINT bereits ausprobiert. Aber alles scheiterte. </p>
P粉905144514P粉905144514436 Tage vor488

Antworte allen(1)Ich werde antworten

  • P粉265724930

    P粉2657249302023-09-04 14:49:07

    翻译后的内容为:

    研究后发现:

    所以我的解决方案是创建一个只包含id的临时表:

    val idsStatement = connection.prepareStatement(
       "CREATE TEMPORARY TABLE to_delete_ids SELECT id FROM table WHERE name = ?")
    idsStatement.setString(1, name)
    idsStatement.executeUpdate()
    

    然后与其他语句/查询进行内连接,以达到相同的结果:

    val statementDeleteUsingIds = connection.prepareStatement(
        "DELETE to_delete_rows FROM table2 to_delete_rows INNER JOIN to_delete_ids tdi ON tdi.id = to_delete_rows.other_tables_id")
    statementDeleteUsingIds.executeUpdate()
    

    Antwort
    0
  • StornierenAntwort