J'ai une connexion à une base de données Derby intégrée.En utilisant Derby incorporé, je peux insérer dans une table temporaire mais ne pas interroger après l'insertion
Je souhaite créer une table temporaire et appris que je dois utiliser DECLARE GLOBAL TEMPORARY TABLE et le préfixe SESSION au nom de la table dans l'instruction INSERT.
J'ai essayé d'utiliser et de ne pas utiliser le préfixe SESSION dans les instructions DECLARE et SELECT, mais cela n'a fait aucune différence.
L'instruction DECLARE pour créer la table temporaire est réussie, tout comme les deux instructions INSERT (chacune renvoie un nombre de 1).
L'instruction SELECT ne renvoie aucun résultat. J'ai essayé "SELECT * FROM ..." sans succès aussi.
Un conseil est apprécié.
(NOTE: la conn est ici une classe wrapper, de sorte que le conn.executeQuery, conn.executeUpdate se fait une déclaration et l'utilisation executeQuery/la mise à jour de la déclaration)
System.out.println("tt 1a"); conn.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.tempstats (t1 int, t2 int, t3 int) NOT LOGGED "); System.out.println("tt 1b"); // PreparedStatement pStmt = conn.prepareStatement("INSERT INTO SESSION.tempstats VALUES (?, ?, ?)"); pStmt.setInt(1, 1); pStmt.setInt(2, 1); pStmt.setInt(3, 1); int count = pStmt.executeUpdate(); System.out.println("tt 2, count " + count); pStmt.setInt(1, 2); pStmt.setInt(2, 2); pStmt.setInt(3, 2); count = pStmt.executeUpdate(); System.out.println("tt 3, count " + count); ResultSet testRs = conn.executeQuery("SELECT t1, t2 from SESSION.tempstats"); count = 0; while (testRs.next()) { log2 ("result of tempstats table is " + testRs.getInt("t1") + " " + testRs.getString("t2")); count++; } System.out.println("tt 4, query result count = " + count); testRs.close(); pStmt.close();
Le résultat du code ci-dessus est
tt 1a
tt 1b
tt 2, count 1
tt 3, count 1
tt 4, query result count = 0