У меня проблема с драйвером JDBC SQL Server, я попробовал драйвер Microsoft JDBC, а также драйвер JTDS, но у них обоих одна и та же проблема: в ResultSet, если я ищу «table.field», я получаю сообщение об ошибке «недопустимое имя столбца». ", но если я ищу только "поле", это работает. Это проблема для меня, потому что у меня есть приложение, которое автоматически генерирует запросы и использует нотацию «таблица.поле», на данный момент я работал над MySQL и Postgresql, и это работало нормально, но теперь мне нужно добавить поддержку SQL Server и Я нашел эту проблему. Это проблема неправильной настройки драйвера или они только так работают? Есть другие драйвера?
Я также нашел случай, когда я не могу заставить работать, например, я создал две таблицы с полем с одинаковым именем и сделал между ними декартово произведение.
Таблицы t1,t2 идентичны и имеют такую структуру
------
| id |
------
| 1 |
------
| 2 |
------
Если я выполню запрос
SELECT * FROM t1,t2
на SQL Server результат будет
-----------
| id | id |
-----------
| 1 | 1 |
-----------
| 1 | 2 |
-----------
| 2 | 1 |
-----------
| 2 | 2 |
-----------
Но из Java с использованием драйвера JDBC я не могу получить тот же результат, потому что я не могу получить доступ к t1.id, t2.id, а только к id, и он возвращает только первый столбец.
Вот пример кода
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
}