如何从JDBC ResultSet获取列的数量?

我正在使用CsvJdbc (它是csv-files的JDBC驱动程序)来访问一个csv文件。 我不知道csv文件包含多less列。 我怎样才能得到列的数量? 有没有JDBC的function呢? 我在java.sql.ResultSet中找不到任何方法。

为了访问文件,我使用类似于CsvJdbc网站上的例子的代码。

您可以从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(2)); System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(2)); 

您可以使用代码获得的结果集中的列的数量(因为DB使用PostgreSQL):

 //加载PostgreSQL的驱动程序
的Class.forName( “org.postgresql.Driver”);

 String url =“jdbc:postgresql:// localhost / test”;
属性props = new Properties();
 props.setProperty( “用户”, “mydbuser”);
 props.setProperty( “密码”, “mydbpass”);
 Connection conn = DriverManager.getConnection(url,props);

 //创build语句
 Statement stat = conn.createStatement();

 //获取结果集
 ResultSet rs = stat.executeQuery(“SELECT c1,c2,c3,c4,c5 FROM MY_TABLE”);

 //从结果集中提供元数据
 ResultSetMetaData rsmd = rs.getMetaData();

 //从元数据对象中计数列
 int numOfCols = rsmd.getColumnCount();

但是你可以得到更多关于列的元信息:

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

至less但并非最不重要的是,你可以得到一些信息,不仅仅是关于桌子,而是关于数据库,如何做到这一点,你可以在这里和这里find。

build立连接并执行查询后,试试这个:

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

这将打印列中的数据,并在到达最后一列时到达新行。

 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)); } }