# Proble mit Selcet mit join und rst.next()



## Mildi (27. Mrz 2007)

hi leute ich hab da ein problem mit meiner sql abfrage, hab zwei Tabellen, einmal Lieferant und AdresseT mit meiner sql anweisung 

```
SELECT *FROM Lieferant RIGHT OUTER JOIN AdresseT ON Lieferant.ID = AdresseT.ID WHERE Lieferantennummer = '"+textf+"' ;";
```
rufe ich alle daten aus beiden Tabellen auf. Wobei  +textF+ ein String ist der an die Methode uebergeben wird.
Jetzt will ich mich ein rst.next() alle Inhalte aus dem Result heraushollen und in Strings speicher, doch genau das klappt nicht. Die SQL Anweisung stimmt auf jeden fall weil ich sie direkt aus access herauskopiert hab.

Hoffe jemand kann mir helfen. Ich kopier euch noch denn ganz Quellcode


```
public void setRsL(String text)
	{	
		String textf = "%"+text+"%";
		try{
	
			String query = "SELECT *FROM Lieferant RIGHT OUTER JOIN AdresseT ON Lieferant.ID = AdresseT.ID WHERE Lieferantennummer = '"+textf+"';";
            //String query = "SELECT * FROM Lieferant, AdresseT WHERE AdresseT.ID = Lieferant.ID AND Lieferantennummer LIKE '"+textf+"';";
            //Datenbankverbindung herstellen
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con=DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=G:/Users/mildi/Desktop/InMa/InmaBuchhandlung.mdb","","" );
            System.out.println("Connection Successful ");
            Statement stmt = con.createStatement();
            ResultSet rst = stmt.executeQuery(query);
            while (rst.next())
        {
        
        	Nr= rst.getString("Lieferantennummer");
        	lID = rst.getString("Lieferant.ID");
        	naL= rst.getString("Name");
        	voL = rst.getString("Vorname");
        	aID = rst.getString("AdresseT.ID");
        	plzL = rst.getString("PLZ");
        	strL = rst.getString("Strasse");
        	telL = rst.getString("Telefonnummer");
        	landL = rst.getString("Land");
        	emL = rst.getString("Email");
               
        }
            
            } catch(Exception e) {
            e.printStackTrace();
        }}
    
    public String getNr()
    {
        Nr = PNr;
        return PNr;               
    }
    public String getName()
    {
        Name = naL;
        return Name;
    }
    public String getVorname()
    {
        Vorname = voL;
        return Vorname;
    }
    public String getPLZ()
    {
        PLZ = plzL;
        return PLZ;
    }
    public String getStr()
    {
        Str = strL;
        return Str;
     }
    public String getTel()
    {
        TeleNr = telL;
        return TeleNr;
    }
    public String getLand()
    {
        Land = landL;
        return Land;
    }
    public String getEmail()
    {
        Email = emL;
        return Email;
    }
    public String getGehalt()
    {
        Gehalt = geh;
        return Gehalt;
    }
    public String getGebD()
    {
        gebDat = GebDat;
        return GebDat;
    }
```

Die get-methoden sind dazu da damit ich auf die daten zugreifen kann. 
ich hab auch die verschieden variablen erstellt, also mit 
	
	
	
	





```
String naL
und so weiter ...
```
 hab es aber nicht reinkopiert

MfG mildi


----------



## SlaterB (27. Mrz 2007)

toll wie du von Zeile 36 bis 80 die ganzen getter postest,
wichtige Informationen,

im Gegensatz zu Fehlermeldungen oder was immer dich zu der Aussage 'geht nicht' veranlasst,
das kann man ruhig weglassen.....

WAS GEHT NICHT?

Tipp:

= 'Hallo%'
trifft nur auf Strings zu, die genau so heißen,
wenn du eine Like-Suche möchtest, dann mache
LIKE 'Hallo%'


----------



## mildi (27. Mrz 2007)

das ist ja das problem,ich bekomm keine Fehlermeldung. 
Ich jTextField in denen ich die werte angezeigt bekommen möchte
hab das so gemacht zb


```
PerWerte load = new PerWerte();
jTextField1.setText(load.getName());
```

ich hab mal zum testen ein system.out gemacht das mir zeigen soll ob die daten ueberhaupt aus demm ResultSet herausgeholt werden und bekomm dann bei 



```
System.out.println(load.getName());
```

als antwort NULL, Also denke ich das was mit demm rst.next() nicht stimmt, doch was?

Mfg Mildi


----------



## SlaterB (27. Mrz 2007)

Tipp:

= 'Hallo%'
trifft nur auf Strings zu, die genau so heißen,
wenn du eine Like-Suche möchtest, dann mache
LIKE 'Hallo%'


----------



## Mildi (27. Mrz 2007)

vielen Dank, die ersten 2 Daten hab ich jetzt aber ich bekomm ne fehler Meldung, 
	
	
	
	





```
No data found
```

Muss mal schauen an was das liegt


MfG mildi


----------



## Mildi (27. Mrz 2007)

Aus der erten tabele Lieferant bekomm ich alle daten raus, bloss nicht aus der 2. AdresseT tabelle, hast du noch einen kleinen Tipp wie ich das machen kann?

Mfg mildi


----------



## SlaterB (27. Mrz 2007)

ne, das liegt doch wohl am Aufbau der Tabellen? 
poste deren Create-Statement

allerdings weißt ich nicht allzu viel zu Outer-Join,
evtl noch einen neuen Thread,
dann aber nur mit SQL-Statement,
+ vielleicht paar rst.get,

nicht 100 Zeilen Code


----------



## Guest (27. Mrz 2007)

Blöde was ist ein Create- Statement?


----------



## SlaterB (27. Mrz 2007)

ein Kommando an die Datenbank zu Erstellen der Tabelle,
alternativ kannst du auch so die einzelnen Spalten, Datentypen, Not Null-Bedingungen usw. aufschreiben


----------



## Guest (27. Mrz 2007)

Also die Lieferanten Adresse sieht so aus:
------------------------------------------------------------------------
|Lieferantennummer |    ID    |      Name        |   Vorname    |
------------------------------------------------------------------------
| 31                        | 110      | Hanz              | Otte             |
------------------------------------------------------------------------
 als Daten Typen alles Text

Die AdresseT:
----------------------------------------------------------------------------------------------------------------------
|   ID      |   PLZ     |          Strasse               |    Telefonnummer     |      Land           |          Email     |
----------------------------------------------------------------------------------------------------------------------
| 1001    | 54875    | Torgartenallee 99          | 07444/2288             | Deutschland     | held@burda.de |
----------------------------------------------------------------------------------------------------------------------
Als Datentypen auch alles Text

Hoffe ich konnt dir weiter helfen, denn ich wusste nicht was ich so recht machen sollte.

MfG mildi


----------



## SlaterB (27. Mrz 2007)

gleich noch die Daten gepostet, gut,
damit scheint doch der Fehler offensichtlich:
zur Lieferanten-Id 110 ist keine Adressen-ID vorhanden

also findet kein Join statt, die Elemente sind korrekt null


----------



## Mildi (27. Mrz 2007)

ne hab jetzt alle uebrigen daten bis auch auf erste zeile gelöschte weil es sonst zu viel zeilen wären, ich gibt schon übereinstimmungen aber halt nicht bei denn 2 gezeigten datensätzen, mein fehler.

MfG mildi


----------



## SlaterB (27. Mrz 2007)

dann solltest du
naL= rst.getString("Name"); 
durch
naL= rst.getString("Lieferant.Name"); 
ersetzen,

so ein ResultSet hat auch MetaDaten bei denen du die Spaltennamen anchschauen kannst
(getMetaData() oder so)


----------



## Guest (27. Mrz 2007)

ne jetzt sagt er mir das er denn Spalten namen nicht gefundne hat


----------



## Mildi (27. Mrz 2007)

ok ich hab es, ich hab einfach eine 2 abfrage gemacht die mir die daten aus der AdresseT Tabelle rausliest und davon hab ich die daten dann rausgelesen.

vielen danke für die hilfe.

MfG mildi


----------



## SlaterB (27. Mrz 2007)

naja, eine Lösung ist das ja nicht..

mir fällt aber dazu nix ein


----------

