Pregunta ¿Cómo obtener el número de columnas de un JDBC ResultSet?


estoy usando CsvJdbc (es un controlador JDBC para archivos csv) para acceder a un archivo csv. No sé cuántas columnas contiene el archivo csv. ¿Cómo puedo obtener el número de columnas? ¿Hay alguna función JDBC para esto? No puedo encontrar ningún método para esto en java.sql.ResultSet.

Para acceder al archivo, uso un código similar al ejemplo en el sitio web CsvJdbc.


74
2018-04-10 18:21


origen


Respuestas:


Puedes obtener el número de columnas desde ResultSetMetaData:

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

int columnsNumber = rsmd.getColumnCount();

210
2018-04-10 18:24



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

6
2018-06-12 07:04



Numero de a columnas en el conjunto de resultados puedes obtener el código (como DB se usa PostgreSQL):

// cargar el controlador para PostgreSQL
Class.forName ("org.postgresql.Driver");

String url = "jdbc: postgresql: // localhost / test";
Propiedades props = new Properties ();
props.setProperty ("usuario", "mydbuser");
props.setProperty ("contraseña", "mydbpass");
Conexión conn = DriverManager.getConnection (url, props);

// crear instrucción
Statement stat = conn.createStatement ();

// obtener un conjunto de resultados
ResultSet rs = stat.executeQuery ("SELECCIONE c1, c2, c3, c4, c5 FROM MY_TABLE");

// desde el conjunto de resultados da los metadatos
ResultSetMetaData rsmd = rs.getMetaData ();

// columnas cuentan desde el objeto metadata
int numOfCols = rsmd.getColumnCount ();

Pero puede obtener más metainformaciones sobre columnas:

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

Y al menos, pero no menos importante, puede obtener información no solo sobre la tabla, sino también sobre DB, cómo hacerlo puede encontrar aquí y aquí.


4
2017-10-27 08:18



Después de establecer la conexión y ejecutar la consulta, intente esto:

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

3
2018-05-16 11:11



Esto imprimirá los datos en columnas y llegará a una nueva línea una vez que se llegue a la última columna.

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

            }

-1
2018-01-02 11:59