Wie kann ich beim Auswählen von mehreren Tabellen mit JDBC Spalten identifizieren?

8

Ich habe zwei Tabellen, die ich der ID-Spalte beifüge, sie sehen so aus:

%Vor%

Und jetzt möchte ich alle Beiträge auswählen und den Benutzernamen mit einschließen:

%Vor%

Und dann versuche ich, die Werte mit:

zu bekommen %Vor%

Aber ich bekomme SQLException beim Ausführen von rs.getInt("posts.id") :

%Vor%

Wie kann ich die Werte aus der obigen SQL-Abfrage mithilfe von JDBC und JavaDB / Derby als Datenbank abrufen?

Wie kann ich die Spalte id in der Tabelle users und posts beim Abrufen von Werten mit ResultSet unterscheiden?

    
Jonas 03.06.2010, 22:32
quelle

5 Antworten

10

Sie versuchen, den Wert id abzurufen, aber Sie verwenden "posts.id", um darauf zu verweisen. Nicht

Alles was Sie brauchen ist der Spaltenname oder Alias, nicht auch der Tabellenname:

%Vor%

Es hätte funktioniert, wenn Ihr Spaltenname selbst "posts.id" wäre, aber ich empfehle, einen Unterstrich (_) anstelle eines Punktes zu verwenden, wenn Sie die Tabelle aktualisieren möchten.

Aber ich habe eine ID-Spalte in beiden Tabellen, wie kann ich zwischen ihnen unterscheiden?

Sie müssen einen Spaltenalias angeben:

%Vor%

... und referenziere diesen Spaltenalias im Java-Code:

%Vor%     
OMG Ponies 03.06.2010, 22:39
quelle
2

Lösung 1: Verwenden Sie den Alias ​​

%Vor%

Lösung 2: Entfernen Sie die doppelte user.id, da Sie sie bereits in der posts-Tabelle haben

%Vor%     
Syd 03.06.2010 22:51
quelle
0

Alias ​​die Spaltennamen

%Vor%

Je nach Ihrem sql-Geschmack muss dieser Alias ​​möglicherweise

sein %Vor%     
blissapp 03.06.2010 22:54
quelle
0
  

Wie kann ich die Werte aus der obigen SQL-Abfrage mit JDBC und JavaDB / Derby als Datenbank abrufen?

Um Werte zu erhalten, sollten Sie den Spaltennamen ResultSet verwenden. Der in ResultSet verwendete Spaltenname ist der ursprüngliche Spaltenname oder der Alias.

Wenn Ihr ResultSet Spalten mit demselben Namen oder Alias ​​enthält, gibt getInt() die erste Übereinstimmung zurück.

Mit Ihrer Auswahl ...

%Vor%

... das rs.getInt() gibt nur das posts.id zurück, da es die erste Spalte ist.

  

Wie kann ich beim Abrufen von Werten mit ResultSet die ID-Spalte in der Tabelle "users and posts" unterscheiden?

Sie können für jede Spalte einen eindeutigen Alias ​​verwenden oder den ResultSetMetaData

verwenden
  • Lösung 1: Verwenden Sie SQL-Alias ​​

SQL

%Vor%

Java

%Vor%
  • Lösung 2: Verwenden Sie ResultSetMetaData

SQL

%Vor%

Java

%Vor%     
raizdepi 30.10.2015 18:00
quelle
-2

Sie können diese weiter vereinfachen, indem Sie die Daten gemäß dem Spaltenindex abrufen, anstatt sie nach dem Spaltennamen zu erhalten. Daten, die wir aus der DB abrufen, werden in der Ergebnisreihenfolge in der Spaltenreihenfolge wie in der SELECT-Anweisung gespeichert. Anstatt die Daten gemäß dem Spaltennamen abzurufen, werden die Daten gemäß Spaltenindex in der Ergebnismenge bevorzugt.

ex:

%Vor%

Dies wird Ihnen helfen, Komplexität und Verwirrung zu beseitigen, die durch ähnliche Spaltennamen in Ihren Datenbanktabellen verursacht werden.

Hoffe, das hilft ...

Alles Gute .. !!

    
svg 16.03.2013 08:38
quelle

Tags und Links