WARUM?

Status
Nicht offen für weitere Antworten.

stevepflc

Mitglied
WARUM geht das???:

Code:
PreparedStatement pstatement = null;

pstatement = connection.prepareStatement("SELECT * FROM meldung_table ORDER BY "+sortby+"");
				pstatement.execute();
ResultSet resultset = pstatement.getResultSet();

ABER das nich???:

Code:
PreparedStatement pstatement = null;

pstatement = connection.prepareStatement("SELECT * FROM meldung_table ORDER BY ?");
				pstatement.setString(1, sortby);				
			                pstatement.execute();
ResultSet resultset = pstatement.getResultSet();

DANKE [/code]
 
S

SlaterB

Gast
WARUM hat dieses Topic so einen bescheidenen Titel? ;)

1. setString ist nur für Strings, wenn es ginge, dann würde daraus z.B.
ORDER BY 'huhu' werden, mit Hochkommata wie für Strings üblich,

2. das System mit ? und setX() ist wahrscheinlich nur für Wert-Parameter, nicht für Tabellen- oder Attributnamen,
also wird wahrscheinlich schon das Compilieren, das "Preparen" des Statements nicht hinhauen,
 

KSG9|sebastian

Top Contributor
Der Sinn von den ? Platzhaltern ist der, dass man z.B. bei WHERE-Bedingungen u.a. SQL-Injection durch schlechtes Programieren verhindert. Ebenso wird es übersichtlicher (und noch zig weitere vorteile).
Aber es ist definitiv nicht dafür da, dass man einen SQL-String baut den man über ein PS belibig anwenden kann

Code:
PreparedStatement ps = con.prepareStatement("? ? ? ? ? ? ? ?");
ps.setString(1, "SELECT");
ps.setString(2, " * ");
ps.setString(3, " FROM ");
ps.setString(4, " users ");
ps.setString(5, " WHERE ");
ps.setString(6, " userId ");
ps.setString(7, " = ");
ps.setInt(8,  1337);

Sehr cool..1 Statemtn für die ganze Anwendung :D
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben