Ich bin neugierig, können wir nur Parameter dynamisch eingeben? Zum Beispiel habe ich ein Objekt wie:Parameter dynamisch für PreparedStatements einstellen
class Fields {
private Integer id;
private String name;
public Fields(Integer id, String name) {
this.id = id;
this.name = name;
}
//Getter - setter here
}
Jetzt bereite ich Aussage für:
public void main() {
PreparedStatement ps = conn.PrepareStatement("SELECT * FROM table WHERE id = ? AND name = ?");`
}
dann stelle ich
Fields param = new Fields(2, "xxx");
Nun .. rufen Sie mich an faul, wie kann ich param zu PrepareStatement wie
senden
oder vielleicht:
ps.setParameters(param.getAsArray())
Zu meinem Punkt besser zu verdeutlichen, möchte ich, wie etwas machen:
for (Fields f: fieldList) {
sql += f + " = ?";
}
pardon mein "und"/"OR" Operator oben fehlt Codes. Mein oberstes Ziel ist, dass ich die gesamten Felder und die entsprechenden Parameter durch Übergabe der Entitätsklasse erstellen kann, indem ich nur ein Teilfeld ausfülle. Der Code wird dann Nullfelder überspringen und gefüllte Felder als Parameter einfügen.
Nun, nur aus Neugier.
Danke
AFAIK Sie sind begrenzt in Bezug auf was Sie zu einem 'PreparedStatement' übergeben können. In der Regel sind nur die Typen zulässig, die Sie in einer Datenbankabfrage verwenden, z. int, varchar, blob usw. Was ist die 'Fields'-Klasse? –
Die Feldklasse wie oben wäre auf einen String beschränkt und daher nicht sehr nützlich. Auch wenn Sie einen Join hatten und dieselbe Variable wiederverwendet wurde, konnte das gleiche Field-Objekt nicht erneut verwendet werden. Natürlich können Sie von 'PreparedStatement' ausgehen und dies selbst implementieren. –
Informationen hinzugefügt, um meinen Punkt besser zu veranschaulichen. Kurz gesagt, ich möchte dynamisch Kriterien Klausel aus Entity-Objekt erstellen, und übergeben Sie meine Felder und Parameter aus Entity-Objekt. Aber das ist nicht nur in der Entity eingeschränkt, ich könnte eine bestimmte Klasse erstellen und relevante Felder teilweise ausfüllen, unnötige überspringen und sie an prepareStatement übergeben. – Magician