Rumah  >  Soal Jawab  >  teks badan

Tulis semula tajuk kepada: Dengan mendapatkan id ResultSet dan mengembalikannya sebagai java.sql.Array

<p>Saya mempunyai yang berikut:</p> <pre class="brush:scala;toolbar:false;"> def getIds(name: String): java.sql.Array = { val id: Array[Integer] = Array() val ps: PreparedStatement = connection.prepareStatement("PILIH id DARI jadual WHERE nama = ?") ps.setString(1, nama) val resultSet = ps.executeQuery() while(resultSet.next()) { val currentId = resultSet.getInt(1) id :+ currentId } return connection.createArrayOf("INTEGER", id.toArray) } </pra> <p>Niat saya adalah untuk menggunakan output kaedah ini ke dalam PreparedStatement yang lain, menggunakan <code>.setArray(1, <array>)</code></p> <p>Tetapi saya mendapat ralat berikut: <code>java.sql.SQLFeatureNotSupportedException</code></p> <p>Saya menggunakan MySQL. Sudah mencuba INTEGER, INT, BIGINT. Tetapi semuanya gagal. </p>
P粉905144514P粉905144514388 hari yang lalu459

membalas semua(1)saya akan balas

  • P粉265724930

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

    Kandungan yang diterjemahkan ialah:

    Setelah meneliti, kami dapati:

    Jadi penyelesaian saya ialah mencipta jadual sementara yang mengandungi hanya id:

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

    Kemudian lakukan gabungan dalaman dengan pernyataan/pertanyaan lain untuk mencapai hasil yang sama:

    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()
    

    balas
    0
  • Batalbalas