![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |||||
|
Stammbenutzer
Kilobyte
Registriert seit: 06.12.2009
Fachbeiträge: 105
Abgegebene Danke: 20
Erhielt 0 Danke für 0 Beiträge
|
Hallo,
ich habe ein Problem mit einem Prepared Statement von mir und zwar bekomme ich immer den fehler aus dem Titel, diesen hier:
Der Code ist folgender:
Das statement ist relativ lang und deshalb wohl ziemlich unverständlich. Allerdings glaube ich auch nicht das man es verstehen muss. Ich setze hier beispielsweise foldenden String ein : pgid = "801, 614, 615, 616, 618, 619, 620, 802, 803, 804, 805, 806, 812, 813, 824, 843, 844, 869". Nun bekomme ich allerdings diesen Fehler, der meiner Recherche zufolge auftritt wenn man mit falschen Datentypen arbeitet bzw. filtern will. Das merkwürdige allerdings ist, dass wenn ich diesen String manuell einsetze direkt ins Statement, ohne die setString Methode, funktioniert es.
|
||||
|
|
|
| #2 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 31.629
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
|
setString() wird natürlich einfache Anführungszeichen drumherum setzen,
soweit ich weiß, war kürzlich schon mal ein Thema, unterstützt PreparedStatement nichts hinsichlich Listen von Werten für IN-Abfragen, baue also manuell zusammen, vielleicht durch eigene Methoden als quasi-Framework halbwegs gesichert, oder wechsle auf höheres wie Hibernate, da geht das dann wieder, (wobei ein String "801, 614, 615, 616, 618" dann auch nicht gerade die perfekte Vorgabe ist, schon auf List<Integer> zu parsen usw.) edit: java - PreparedStatement IN clause alternatives? - Stack Overflow mit Link auf JavaRanch Journal - October 2005 Volume 4 Issue 2
__________________
Hansa wird Meister. Geändert von SlaterB (20.08.2012 um 09:53 Uhr) |
|
|
|
| Danke sagt: |
Br4ve (20.08.2012)
|
| #3 (permalink) | ||||||||||||||||
|
Projektleiter MyOggRadio
Team MyOggRadio
Registriert seit: 20.04.2005
Fachbeiträge: 925
Abgegebene Danke: 10
Erhielt 56 Danke für 56 Beiträge
|
__________________
http://www.myoggradio.org |
|||||||||||||||
|
|
|
|||||||||||||||
| #4 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 31.629
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
|
muss nicht zwingend ein Problem sein, bei mir in Oracle ist das \ einfach ein \,
oder stört zumindest die Auswertung nicht gleich mit Fehlermeldung.. zum Escapen '' schreiben, zwei Hochkommata hintereinander
__________________
Hansa wird Meister. |
|
|
|
| #5 (permalink) | |||||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 06.12.2009
Fachbeiträge: 105
Abgegebene Danke: 20
Erhielt 0 Danke für 0 Beiträge
|
Also das habe ich als Problem bislang noch nicht festgestellt, bzw hat mich nicht gestört. Ich habe allerdings in diesem Zusammenhang einen weiteren Fehler, nachdem ich über Slater's Links eine dynamische Generierung der "?" und der entsprechenden setString-Methoden versucht habe zu realisieren.
Mein Code ist nun folgender:
jez bekomme ich wieder so eine schöne Oracle Fehlermeldung:
Das bedeutet doch, dass ich bestimmte Variablennamen nicht benutzen darf. Und müsste meines Wissens "nuofpgid" betreffen. Allerdings verstehe ich nicht wieso das hier ein Problem ist. |
||||
|
|
|
| #6 (permalink) | |||
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 31.629
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
|
immer noch setzt setString() Anführungszeichen, was nach deinem vorherigen erfolgreichen Test nicht anzuraten ist,
benutze setInteger/ setLong, was immer da ist, jedenfalls kein String, die gegebenen Strings parsen, oder gleich bei Gewinnung umstellen welchen Datentyp hat pgroupid? dieses Vorgehen mit vielen ? finde ich nicht so toll, eine gewisse Sicherheit kann man aber wohl nicht absprechen, beim Zusammenbau in der Schleife ist StringBuilder zu empfehlen, aber das ist schon nur noch kleiner Performance-Tipp, andererseits ein wichtiger, lohnt sich durchaus zu lernen, genauso allgemein zu verbessern:
oder oder gleich die erzeugte Liste bei dir wird jedenfalls gleich weggeworfen, ein neuer Rückgabewert in die Variable geschrieben, List statt ArrayList als Typ der Variablen auch wieder empfehlenswert
__________________
Hansa wird Meister. |
||
|
|
|
| Danke sagt: |
Br4ve (20.08.2012)
|
| #7 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 06.12.2009
Fachbeiträge: 105
Abgegebene Danke: 20
Erhielt 0 Danke für 0 Beiträge
|
Hm danke für deine Antwort ja eigentlich kann ich hier auch einfach Integer benutzen jetzt das dürfte kein Problem sein.
Wenn ich dich richtig verstehe, ist also diese Schreibweise die beste: Ist das so richtig? ![]() Abschließend stellt sich mir dann noch die Frage wieso ist hier List ArrayList vorzuziehen? Was hat die List gegenüber der ArrayList für Vorteile? |
|
|
|
| #8 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 13.11.2005
Fachbeiträge: 31.629
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
|
der Rückgabewert von anfraPgids() sollte auch List sein, soweit wie überall vertretbar,
grundsätzlich könnte eine Methode dann die Liste wechseln, z.B. auf LinkedList, oder Datenbanken liefern oftmals komplizierte internere List-Klassen, die bei Zugriff erst noch einen Proxy initialisieren, Daten nachladen usw., bei diesem Wechsel wäre das Restprogramm unberührt, wenn gut programmiert kurz: die Information ArrayList bringt dir keinen Vorteil, schränkt dich nur ein, es reicht wenn es eine beliebige List ist, das Interface bietet alle nötigen Methoden
__________________
Hansa wird Meister. |
|
|
|
| Danke sagt: |
Br4ve (20.08.2012)
|
| #9 (permalink) | |||||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 06.12.2009
Fachbeiträge: 105
Abgegebene Danke: 20
Erhielt 0 Danke für 0 Beiträge
|
Leider funktioniert da irgendwas immernoch nicht, vielleicht liegt es an den Temperaturen, dass es mir einfach nicht auffällt. Ich habe eigentlich alles umgesetzt was du mir empfohlen hast, denke ich.
Hier mein Code:
Bei der Instanziierung der List bin ich mir nicht sicher ob das so richtig ist. Jedenfalls bekomme ich immernoch folgenden Fehler:
Den bekomme ich allerdings auch wenn ich als Liste die ArrayList benutze. Der String nuofpgid muss doch so bleiben oder nicht? Daraus kann ich doch kein Integer machen!? |
||||
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| OpenGTS DeviceCommandHandler | ghostship | Allgemeine Java-Themen | 5 | 06.03.2012 17:16 |
| java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state | yerl | Datenbankprogrammierung | 2 | 14.12.2011 14:51 |
| In Römische Zahlen umwandeln | Eyian | Hausaufgaben | 25 | 10.11.2011 09:13 |
| imaginäre und komplexe Zahlen | alfst | Java Basics - Anfänger-Themen | 1 | 06.09.2008 23:08 |
| tage ausrechnen | unwissende | Java Basics - Anfänger-Themen | 4 | 30.01.2005 12:02 |
| Lesezeichen |
|
|