我正在使用CsvJdbc(它是csv文件的JDBC驱动程序)来访问csv文件。我不知道csv文件包含多少列。如何获得列数?这有什么JDBC功能吗?我在java.sql.ResultSet中找不到任何方法。
为了访问该文件,我使用的代码类似于CsvJdbc网站上的example。
答案 0 :(得分:226)
您可以从ResultSetMetaData获取列号:
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
答案 1 :(得分:7)
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));
答案 2 :(得分:5)
代码可以获得columns in the result set的数量(因为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();
但是你可以获得更多关于列的元信息:
for(int i = 1; i <= numOfCols; i++)
{
System.out.println(rsmd.getColumnName(i));
}
至少但并非最不重要的是,您不仅可以获得有关表格的信息,还可以获得有关数据库的信息,如何操作,您可以找到here和here。
答案 3 :(得分:4)
建立连接并执行查询后,请尝试:
ResultSet resultSet;
int columnCount = resultSet.getMetaData().getColumnCount();
System.out.println("column count : "+columnCount);
答案 4 :(得分:-1)
这将在列中打印数据,并在到达最后一列后转到新行。
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));
}
}