CsvJdbc (csvファイル用のJDBCドライバーです)を使用してcsvファイルにアクセスしています。 csvファイルに含まれる列の数がわかりません。列数を取得するにはどうすればよいですか?このためのJDBC機能はありますか? Java.sql.ResultSetでこのためのメソッドが見つかりません。
ファイルにアクセスするには、CsvJdbc Webサイトの example に似たコードを使用します。
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 "; Properties props = new Properties(); props.setProperty(" user "、" mydbuser "); props.setProperty(" password "、" mydbpass "); Connection conn = DriverManager.getConnection(url、props); // create statement Statement stat = conn.createStatement(); //結果セットの取得 ResultSet rs = stat.executeQuery( "SELECT c1、c2、c3、c4、c5 FROM MY_TABLE"); //結果セットからメタデータを与えます.getColumnCount();
ただし、列に関するメタ情報をさらに取得できます。
for(int i = 1; i <= numOfCols; i++)
{
System.out.println(rsmd.getColumnName(i));
}
そして少なくとも重要なことですが、テーブルだけでなくDBについての情報も得られます。その方法は here および here です。
接続を確立してクエリを実行した後、これを試してください:
ResultSet resultSet;
int columnCount = resultSet.getMetaData().getColumnCount();
System.out.println("column count : "+columnCount);