Onko mahdollista tehdä PreparedStatement-oliota, joka on tällainen:
"select ? from tbl1 where id = ?"
Onko siis tällainen mahdollista:
select ? from
Ja koodissa jotain tähän tyyliin:
prepStmt.setString(1, "columnX");
...
ResultSet rset = prepStmt.executeQuery();
while (rset.next())
rset.getString(1);
...
Onko tuollainen mahdollista jollakin tavalla.
Kun kokeilin tuollaista koodia, niin rset.getString(1) palautti arvon "columnX", eikä siis sitä mitä yritin hakea kannasta vaan sen minkä syötin prepStmt.setString-metodilla.
Tällainen olisi kätevä, jos on kauhea määrä sarakkeita ja tahtoisi käyttää PreparedStatementtia.
Simple statementilla kyllä onnistuu, mutta se on hitaampi kuin prep stmt.
"select ? from tbl1 where id = ?"
Onko siis tällainen mahdollista:
select ? from
Ja koodissa jotain tähän tyyliin:
prepStmt.setString(1, "columnX");
...
ResultSet rset = prepStmt.executeQuery();
while (rset.next())
rset.getString(1);
...
Onko tuollainen mahdollista jollakin tavalla.
Kun kokeilin tuollaista koodia, niin rset.getString(1) palautti arvon "columnX", eikä siis sitä mitä yritin hakea kannasta vaan sen minkä syötin prepStmt.setString-metodilla.
Tällainen olisi kätevä, jos on kauhea määrä sarakkeita ja tahtoisi käyttää PreparedStatementtia.
Simple statementilla kyllä onnistuu, mutta se on hitaampi kuin prep stmt.
Vastaukset 2
Vanhimmat
> "select ? from tbl1 where id = ?"
> Kun kokeilin tuollaista koodia, niin
> rset.getString(1) palautti arvon "columnX", eikä
> siis sitä mitä yritin hakea kannasta vaan sen
> minkä syötin prepStmt.setString-metodilla.
Niin, koska setString() teki kyselystä tämmöisen
"select 'columnX' from tb11 where.."
PreparedStatementilla ei voi parametrisoida kolumnien nimiä. Hae joko kaikki kolumnit lauseella "select * .." tai muodosta PreparedStatementit dynaamisesti, esim.
new PreparedStatement("select " columnX "from..")
Hyvä JDBC-ajuri kääntää kyselyt valmiiksi, joten kun luot kyselyn samalla kolumnin nimellä uudestaan, se on jo käännettynä muistissa.
kiitos!