【问题标题】:How to get data with column names/headers in java JDBC [duplicate]如何在java JDBC中获取具有列名/标题的数据[重复]
【发布时间】:2017-12-27 10:49:37
【问题描述】:

以下是使用 JDBC 从 DB 获取数据的 Java 代码。但是,我也想要列名,但它只是附加数据。我不确定如何实现这一点。

import java.io.FileReader;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.Properties;
public class DbToCSV {


    public static void main(String[] args) {


        try {

            FileReader reader=new FileReader("some.properties");  
            Properties properties=new Properties();  
            properties.load(reader);  
            String filename =properties.getProperty("filepath");
            FileWriter filewrite = new FileWriter(filename);
            Class.forName(properties.getProperty("jdbc.driver")).newInstance();
            Connection connection = DriverManager.getConnection
                    (properties.getProperty("jdbc.url"),
                    properties.getProperty("jdbc.username"),
                    properties.getProperty("jdbc.password"));

            String query = properties.getProperty("jdbc.query");

            Statement stmt = connection.createStatement();
            ResultSet resultSet = stmt.executeQuery(query);
            ResultSetMetaData rsmd = resultSet.getMetaData();
            int columnCount = rsmd.getColumnCount();


            while (resultSet.next()) {
                for(int i=2; i<=columnCount;i++){

                    filewrite.append(resultSet.getString(i));
                    filewrite.append(',');
                }
                filewrite.append('\n');
               }
            filewrite.flush();
            filewrite.close();
            connection.close();
            System.out.println("CSV File is Generated successfully.");



        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

请任何人解释一下如何在 CSV 中使用列标题?

【问题讨论】:

标签: java mysql oracle jdbc


【解决方案1】:

您可以从ResultSet 元数据中获取此信息。

ResultSetMetaData rsmd = rs.getMetaData();

String name = rsmd.getColumnName(1);

【讨论】:

  • here(和其他地方)所述,getColumnLabel 通常比getColumnName 更安全。
  • 感谢 Gord,解决了我的问题。我使用“as”从多个表中选择连接来构建数据集以从中创建预定义表。 getColumnName 返回的是原始列名,而不是我在查询中重命名的名称。
猜你喜欢
  • 2017-07-22
  • 2011-11-05
  • 2022-06-28
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
相关资源
最近更新 更多