私はSQL Server JDBCドライバに問題があります。私はMicrosoft JDBCドライバとJTDSドライバを試しましたが、両方とも同じ問題があります。ResultSetで "table.field"を検索すると "invalid列名 "ですが、"フィールド "だけを検索すると機能します。 これは私にとって問題です。なぜなら、自動的にクエリを生成し、 "table.field"という表記を使用するアプリケーションを持っているからです。今はMySQLとPostgreSQLで作業していますが、うまくいきましたが、今はSQL Serverサポート私はこの問題を発見しました。 ドライバの設定が間違っていたり、このようにしか動作しないという問題がありますか? 他のドライバがありますか?SQL Server JDBCでtable.field表記?
私は仕事をすることができない場合もあります。たとえば、同じ名前のフィールドを持つ2つのテーブルを作成し、それらの間にデカルト積を作りました。私は、クエリにSQL Server上
SELECT * FROM t1,t2
を実行すると、結果が
-----------
| id | id |
-----------
| 1 | 1 |
-----------
| 1 | 2 |
-----------
| 2 | 1 |
-----------
| 2 | 2 |
-----------
なります
------
| id |
------
| 1 |
------
| 2 |
------
テーブルT1、T2は同じであり、彼らはこのような構造を持っていますが、 JDBCドライバを使用してJavaから私は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
}
このクエリの結果はどうなりますか?あなたはデカルト積を得る。このことをしていますか? – Jens
これをクエリレベルで処理し、t1とt2に別名を割り当てる必要があります。 – jmcg
私はこれがあなたが探していると思うhttp://stackoverflow.com/questions/7224024/jdbc-resultset-get-columns-with-table-alias – Amal