Ich habe ein Problem mit SQL Server JDBC-Treiber, habe versucht, den Microsoft JDBC-Treiber und auch den JTDS-Treiber, aber sie haben beide das gleiche Problem: in der ResultSet wenn ich nach "table.field" suche ich bekomme den Fehler "ungültig Spaltenname ", aber wenn ich nach" Feld "suche, funktioniert es nur. Dies ist ein Problem für mich, weil ich eine Anwendung habe, die automatisch Abfragen generiert und die Notation "table.field" verwendet, für jetzt habe ich an MySQL und Postgresql gearbeitet und es hat gut funktioniert, aber jetzt muss ich SQL Server-Unterstützung hinzufügen und ich habe dieses Problem gefunden. Es ist ein Problem der Fehlkonfiguration des Treibers oder sie funktionieren nur auf diese Weise? Es sind andere Treiber verfügbar?table.field Notation mit SQL Server JDBC?
Ich fand auch einen Fall, dass ich nicht arbeiten kann, zum Beispiel habe ich zwei Tabellen mit einem Feld mit dem gleichen Namen erstellt, und ich habe das kartesische Produkt zwischen ihnen.
Die Tabellen T1, T2 sind identisch, und sie haben diese Struktur
------
| id |
------
| 1 |
------
| 2 |
------
Wenn ich die Abfrage
SELECT * FROM t1,t2
auf SQL Server ausführen das Ergebnis
-----------
| id | id |
-----------
| 1 | 1 |
-----------
| 1 | 2 |
-----------
| 2 | 1 |
-----------
| 2 | 2 |
-----------
sein wird, aber von Java mit dem JDBC-Treiber kann ich nicht das gleiche Ergebnis erhalten, weil ich nicht auf t1.id, t2.id, sondern nur auf t1.id zugreifen kann ID und es gibt nur die erste Spalte zurück.
Hier ist der Beispielcode
Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/test", "user", "pass");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM t1, t2");
while(rs.next()){
System.out.println(rs.getString("id")); //This works
System.out.println(rs.getString("t1.id"));//This not works
}
Was sollte das Ergebnis dieser Abfrage sein? Sie erhalten ein kartesisches Produkt. Machen Sie das Sinn? – Jens
sollten Sie dies auf Abfrageebene behandeln und einen Alias für t1 und t2 zuweisen. – jmcg
Ich denke, das ist, was Sie suchen http://stackoverflow.com/questions/7224024/jdbc-resultset-get-columns-with-table-alias – Amal