Jeg ville bruge den første og så vælge nogle mere sigende navne a la: selTable1PrepStmt selTable2PrepStmt for at gøre koden mere letlæselig ved at man ud fra navnet ved hvilken SQL sætning der gemmer sig bag ved den.
Ideen med et prepared statement er netop at det er prepared.
Der er ingen ide i at lave et prepared statement, for derefter at prepare det igen med et nyt SQL statement - så er dynamisk SQL mere velegnet.
Preparedstatement er netop beregnet til at prepare et statement en gang og derefter eksekvere det flere gange, fordelen for databasen er at den kun skal oprette en eksekveringsplan en gang.
Spørgsmålet gik ikke på prepared statement versus almindelig statement men på genbrug af prepared statement referancen.
Der er 2 grunde til at bruge prepared statements.
Den ene er hvis man skal bruge samme grundliggende SQL sætning med forskellige parametre flere gange.
Den anden er for at undgå quote problemer.
Hvis dsj kun bruger den prepared statement en gang, så gælder den første grund ikke.
Men dsj kan jo sagtens bruge prepared statement af den anden grund eller faktisk bruge den prepared statement flere gange og bare have valgt ikke at gentage executeQuery linien i hans lille code outline, fordi det som sagt intet har med hans spørgsmål at gøre.
Det er ganske almindeligt at have flere prepared statements i et stykke kode.
Det var noget af det som miknil nævner, som jeg tænkte på. Nu har jeg bare aldrig brug for at køre det samme sql-kald flere gange i træk - det skulle da lige være insert's, men det klarer jeg i én sætning med insert ... select (MySQL).
Er der virkelig ingen forskel andet end nogle objekt-referencer??
Ikke i det kode fragmenter du har postet i spørgsmålet.
Hvis du kun bruger din prepared statement så er der ikke nogen performance fordel ved det (men mkan kan stadig have nytte af det til at undgå quote problemer).
Strengt taget er arne's svar korrekt. Du bør dog overveje om det er nødvendigt at bruge preparedstatement (p.g.a bindvariable ?) eller om ikke dynamisk sql var mere velegnet.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.