我正在使用CsvJdbc(它是 csv 文件的 JDBC 驱动程序)来访问 csv 文件。我不知道 csv 文件包含多少列。如何获得列数?是否有任何 JDBC 功能?我在 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(1));
System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));
您可以通过代码获得的结果集中的列数(因为 DB 使用的是 PostgreSQL):
//加载PostgreSQL驱动
Class.forName("org.postgresql.Driver");
字符串 url = "jdbc:postgresql://localhost/test";
属性 props = new Properties();
props.setProperty("user","mydbuser");
props.setProperty("密码","mydbpass");
连接连接 = DriverManager.getConnection(url, props);
//创建语句
语句 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));
}
建立连接并执行查询后,请尝试以下操作:
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));
}
}