# textfeld eingabe nicht in den SQL befehl einbinden



## Guest (13. Mrz 2006)

Hallo,

ich möchte gern mein jtextfield in mein sql befehl einbinden, aber leider geht das nicht warum?

sql sieht so aus


```
ResultSet rs = dbc.createStatement().executeQuery("SELECT * FROM person where name="+getTname());
```

was mach ich falsch?


danke  :autsch:


----------



## bronks (13. Mrz 2006)

Da fehlt was, wenn ich richtig annehme, daß Tname ein String ist: 

ResultSet rs = dbc.createStatement().executeQuery("SELECT * FROM person where name='"+getTname()+"'");


----------



## mikachu (14. Mrz 2006)

angenommen der zurückgegebene wert von getTname() ist "hubert", wäre das dann nicht egal, ob man jetzt

```
SELECT * FROM person WHERE name=hubert
```
oder

```
SELECT * FROM person WHERE name='hubert'
```
schreibt ? ???:L 

MfG mika


----------



## Guest (14. Mrz 2006)

so,

also zu einer lösung bin ich immernochnicht gekommen.

was mach ich da noch falsch, ich hab das probiert was ihr da vorgeschlagen habt!


Hilfe :bahnhof:


----------



## bronks (14. Mrz 2006)

mika hat gesagt.:
			
		

> ...
> 
> ```
> SELECT * FROM person WHERE name=hubert
> ...


In diesem Fall erwartet die Datenbank ein Feld welches hubert heisst.


----------



## bronks (14. Mrz 2006)

Anonymous hat gesagt.:
			
		

> ... also zu einer lösung bin ich immernochnicht gekommen ... was mach ich da noch falsch, ich hab das probiert was ihr da vorgeschlagen habt! ...


Werden Fehlermeldungen ausgegeben?

Laß Dir den SQL-Text mal ausgeben. Evtl. entdeckst Du sofort einen Fehler ... sonst: Den Sql hier posten.


----------



## Guest (14. Mrz 2006)

ok also hier, code sieht jetzt so aus


```
ResultSet rs = dbc.createStatement().executeQuery("SELECT * FROM person where name='"+getTname()+"'");
```

Fehlermeldung



> java.sql.SQLException: No current row in the ResultSet
> at net.sourceforge.jtds.jdbc.TdsResultSet.currentRow(TdsResultSet.java:727)
> at net.sourceforge.jtds.jdbc.AbstractResultSet.getObject(AbstractResultSet.java:255)
> at net.sourceforge.jtds.jdbc.AbstractResultSet.getString(AbstractResultSet.java:265)
> ...



So, und das steht in meinem SQL "rs" den ich absetze



> SQL Befehl       net.sourceforge.jtds.jdbc.TdsResultSet@f18e8e     SQL Befehl ende



Mehr infos habe ich nicht!

oder?


----------



## bronks (14. Mrz 2006)

So wie Du die Zeile geschrieben hast läßt sich das ganze auch nicht ordentlich Debuggen. 

Schreib den Sql in einen String, laß ihn Dir ausgeben und dann konfrontierst Du den Sql direkt mit der Datenbank. Auf jeden Fall erhälst Du momentan einen leeren ResultSet.


----------



## Guest (14. Mrz 2006)

ha,
so ein mist... schau dir mal an was der in den SQl schreibt!




> SELECT * FROM person where name=javax.swing.JTextField[,120,56,150x20,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@f18e8e,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=51,g=51,b=51],disabledTextColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=51,g=51,b=51],selectionColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],columns=0,columnWidth=0,command=,horizontalAlignment=LEADING]


----------



## Caffè Latte (14. Mrz 2006)

Hi,

mach das Ganze mit einem prepared statement, und du hast diese Probleme nicht. Beispiel:


```
PreparedStatement pSQL = dbc.prepareStatement("SELECT * FROM person WHERE name = ?");
pSQL.setString(1, getTName());
ResultSet rs = pSQL.executeQuery();
```

Falls die Query mehrmals ausgeführt wird, ist diese Variante zum einen schneller und du sparst die das Gedöns mit den Hochkommas.

Hoffe es hilft,

Caffè Latte


----------



## The_S (14. Mrz 2006)

Anonymous hat gesagt.:
			
		

> ha,
> so ein mist... schau dir mal an was der in den SQl schreibt!
> 
> 
> ...



Öhm, "getTname" ist aber schon ein String und kein Textfeld!?


----------



## bronks (14. Mrz 2006)

Anonymous hat gesagt.:
			
		

> ha,
> so ein mist... schau dir mal an was der in den SQl schreibt!


Ja! Genau da liegt jetzt Dein aktuelles Problem. Da kann ich leider nichts dazu sagen, aber jemand aus der GUI-Ecke hilft Dir sicher gerne weiter.


----------



## Guest (14. Mrz 2006)

jap genau ist ein TextField!!!


muss ich da was anders schreiben?

Jetzt muss ich nochmal bei den GUI´s posten?

Ach verdampt!


Ich versuchs nochmal, wenn es nciht geht!!!

was mach ich blos? :cry:


----------



## Caffè Latte (14. Mrz 2006)

Hi,

so wie es aussieht ist getName() eine Methode. Allerdings liefert die nicht den Inhalt des Textfeldes als String, sondern das Objekt selbst als String (oder so was in der Art). Um an den Text zu kommen gibt es zu jedem JTextfield die getText() Methode. Versuch es mal mit der.

Caffè Latte


----------



## Guest (14. Mrz 2006)

Oh super,
ich glaube wir hatten gerade beide den geleichen gedanken.

ich habe es auch so gemacht wie du es gerade vorgeschlagen hast!!!


```
String rsb="SELECT * FROM person where name='"+ tname.getText()+"'";
```

OK, hat sich also alles erledigt!!!


Vielen Dank und die nächste frage kommt bestimmt!!!!

 :applaus:


----------

