"select ? from", preparedStmt ???

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.
2254
Äänestä

Muut lukivat myös

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.

Äänestä
  • kiitos!

    Äänestä

Kommentoi aloitusta


Onko mahdollista? kirjoitti:

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.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu