2017-05-09 12 views
0
results = statement.executeQuery("SELECT * FROM " + database + ".dbo." + tablename); 
    ResultSetMetaData metaData = results.getMetaData(); 

    if (metaData != null) { 
     System.out.println(database + ".dbo." + tablename+"ColumnCount()"+metaData.getColumnCount()); 
      for (int i = 1; i < metaData.getColumnCount(); i++) { 
       columnMap.put(metaData.getColumnName(i), metaData.getColumnTypeName(i)); 
      } 
     } 
+0

クエリは29件のレコードを返す、このコードを使用して、しかし、私はint型のIを使用している場合= 0 in forループimportColumnCount()30を取得しています 無効な列インデックス0 –

+0

実際の列はそのテーブルで30、私はそれらをMapに配置する必要がありますが、for iループを使用するため、 、喜びどのように私は30の列名を得ることができますアドバイス? –

答えて

0

ResultSetMetaDataは1ベースのリストなので、このエラーが発生しています。ここで

results = statement.executeQuery("SELECT * FROM " + database + ".dbo." + tablename); 
    ResultSetMetaData metaData = results.getMetaData(); 

    if (metaData != null) { 
     System.out.println(database + ".dbo." + tablename+"ColumnCount()"+metaData.getColumnCount()); 
      for (int i = 1; i <= metaData.getColumnCount(); i++) { 
       columnMap.put(metaData.getColumnName(i), metaData.getColumnTypeName(i)); 
      } 
     } 

がResultSetMetaDataを使用しての例です:

があるためにあなたのコードを変更し

https://examples.javacodegeeks.com/core-java/sql/resultsetmetadata/java-sql-resultsetmetadata-example/

+0

Avitus、その働きありがとうございます。 i <= metaData.getColumnCount();を使用する必要があります。 –

関連する問題