web-dev-qa-db-ja.com

JDBC ResultSetから列の数を取得する方法は?

CsvJdbc (csvファイル用のJDBCドライバーです)を使用してcsvファイルにアクセスしています。 csvファイルに含まれる列の数がわかりません。列数を取得するにはどうすればよいですか?このためのJDBC機能はありますか? Java.sql.ResultSetでこのためのメソッドが見つかりません。

ファイルにアクセスするには、CsvJdbc Webサイトの example に似たコードを使用します。

82
Jonas

ResultSetMetaData から列番号を取得できます。

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

int columnsNumber = rsmd.getColumnCount();
229
Roman
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)); 
7
lokesh

結果セットの列 の数はコードで取得できます(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 です。

5
1ac0

接続を確立してクエリを実行した後、これを試してください:

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