简体   繁体   English

如何从 JDBC ResultSet 中获取列数?

[英]How to get the number of columns from a JDBC ResultSet?

I am using CsvJdbc (it is a JDBC-driver for csv-files) to access a csv-file.我正在使用CsvJdbc (它是 csv 文件的 JDBC 驱动程序)来访问 csv 文件。 I don't know how many columns the csv-file contains.我不知道 csv 文件包含多少列。 How can I get the number of columns?我怎样才能得到列数? Is there any JDBC-function for this?是否有任何 JDBC 功能? I can not find any methods for this in java.sql.ResultSet.我在 java.sql.ResultSet 中找不到任何方法。

For accessing the file, I use code similar to the example on the CsvJdbc website.为了访问该文件,我使用了类似于 CsvJdbc 网站上的示例的代码。

You can get columns number from ResultSetMetaData :您可以从ResultSetMetaData获取列号:

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();

int columnsNumber = rsmd.getColumnCount();
PreparedStatement ps=con.prepareStatement("select * from stud");

ResultSet rs=ps.executeQuery();

ResultSetMetaData rsmd=rs.getMetaData();

System.out.println("columns: "+rsmd.getColumnCount());  
System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));  
System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1)); 

Number of a columns in the result set you can get with code (as DB is used PostgreSQL):您可以使用代码获得的结果集中数(因为 DB 使用的是 PostgreSQL):

//load the driver for PostgreSQL
Class.forName("org.postgresql.Driver");

String url = "jdbc:postgresql://localhost/test";
Properties props = new Properties();
props.setProperty("user","mydbuser");
props.setProperty("password","mydbpass");
Connection conn = DriverManager.getConnection(url, props);

//create statement
Statement stat = conn.createStatement();

//obtain a result set
ResultSet rs = stat.executeQuery("SELECT c1, c2, c3, c4, c5 FROM MY_TABLE");

//from result set give metadata
ResultSetMetaData rsmd = rs.getMetaData();

//columns count from metadata object
int numOfCols = rsmd.getColumnCount();

But you can get more meta-informations about columns:但是您可以获得有关列的更多元信息:

for(int i = 1; i <= numOfCols; i++)
{
    System.out.println(rsmd.getColumnName(i));
}

And at least but not least, you can get some info not just about table but about DB too, how to do it you can find here and here .至少但并非最不重要的是,您不仅可以获得有关表的信息,还可以获得有关 DB 的一些信息,您可以在此处此处找到如何操作。

After establising the connection and executing the query try this:在建立连接并执行查询后,试试这个:

 ResultSet resultSet;
 int columnCount = resultSet.getMetaData().getColumnCount();
 System.out.println("column count : "+columnCount);

This will print the data in columns and comes to new line once last column is reached.这将在列中打印数据,并在到达最后一列后换行。

ResultSetMetaData resultSetMetaData = res.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
for(int i =1; i<=columnCount; i++){
                if(!(i==columnCount)){

                    System.out.print(res.getString(i)+"\t");
                }
                else{
                    System.out.println(res.getString(i));
                }

            }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM