parametros example ejemplo descargar create consultas con java jdbc

example - jdbc java descargar



Recuperar nombres de columnas de java.sql.ResultSet (10)

Con java.sql.ResultSet ¿hay una manera de obtener el nombre de una columna como una String usando el índice de la columna? Eché un vistazo a la documentación de la API pero no puedo encontrar nada.


SQLite 3

Utilizando getMetaData ();

DatabaseMetaData md = conn.getMetaData(); ResultSet rset = md.getColumns(null, null, "your_table_name", null); System.out.println("your_table_name"); while (rset.next()) { System.out.println("/t" + rset.getString(4)); }

EDITAR: Esto funciona con PostgreSQL también


@Cyntech tiene razón.

En caso de que su tabla esté vacía y aún necesita obtener nombres de columna de tabla, puede obtener su columna como tipo Vector, consulte lo siguiente:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); Vector<Vector<String>>tableVector = new Vector<Vector<String>>(); boolean isTableEmpty = true; int col = 0; while(rs.next()) { isTableEmpty = false; //set to false since rs.next has data: this means the table is not empty if(col != columnCount) { for(int x = 1;x <= columnCount;x++){ Vector<String> tFields = new Vector<String>(); tFields.add(rsmd.getColumnName(x).toString()); tableVector.add(tFields); } col = columnCount; } } //if table is empty then get column names only if(isTableEmpty){ for(int x=1;x<=colCount;x++){ Vector<String> tFields = new Vector<String>(); tFields.add(rsmd.getColumnName(x).toString()); tableVector.add(tFields); } } rs.close(); stmt.close(); return tableVector;


Además de las respuestas anteriores, si está trabajando con una consulta dinámica y desea los nombres de las columnas pero no sabe cuántas columnas hay, puede usar el objeto ResultSetMetaData para obtener el número de columnas primero y luego recorrerlas .

Enmendando el código de Brian:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); // The column count starts from 1 for (int i = 1; i <= columnCount; i++ ) { String name = rsmd.getColumnName(i); // Do stuff with name }


Cuando necesite los nombres de las columnas, pero no desea capturar entradas:

PreparedStatement stmt = connection.prepareStatement("SHOW COLUMNS FROM `yourTable`"); ResultSet set = stmt.executeQuery(); //store all of the columns names List<String> names = new ArrayList<>(); while (set.next()) { names.add(set.getString("Field")); }

NOTA: Solo funciona con MySQL


Esta pregunta es antigua y también lo son las respuestas anteriores correctas. Pero lo que estaba buscando cuando encontré este tema era algo así como esta solución. Esperemos que ayude a alguien.

// Loading required libraries import java.util.*; import java.sql.*; public class MySQLExample { public void run(String sql) { // JDBC driver name and database URL String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost/demo"; // Database credentials String USER = "someuser"; // Fake of course. String PASS = "somepass"; // This too! Statement stmt = null; ResultSet rs = null; Connection conn = null; Vector<String> columnNames = new Vector<String>(); try { // Register JDBC driver Class.forName(JDBC_DRIVER); // Open a connection conn = DriverManager.getConnection(DB_URL, USER, PASS); // Execute SQL query stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs != null) { ResultSetMetaData columns = rs.getMetaData(); int i = 0; while (i < columns.getColumnCount()) { i++; System.out.print(columns.getColumnName(i) + "/t"); columnNames.add(columns.getColumnName(i)); } System.out.print("/n"); while (rs.next()) { for (i = 0; i < columnNames.size(); i++) { System.out.print(rs.getString(columnNames.get(i)) + "/t"); } System.out.print("/n"); } } } catch (Exception e) { System.out.println("Exception: " + e.toString()); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (Exception mysqlEx) { System.out.println(mysqlEx.toString()); } } } }


Las declaraciones SQL que leen datos de una consulta de base de datos devuelven los datos en un conjunto de resultados. La instrucción SELECT es la forma estándar de seleccionar filas de una base de datos y verlas en un conjunto de resultados. La interfaz **java.sql.ResultSet** representa el conjunto de resultados de una consulta de base de datos.

  • Obtener métodos: se usa para ver los datos en las columnas de la fila actual a la que apunta el cursor.

Uso de MetaData of a result set to fetch the exact column count

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); boolean b = rsmd.isSearchable(1);

http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html

y aún más para enlazarlo a la tabla de modelo de datos

public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ //STEP 2: Register JDBC driver Class.forName("com.mysql.jdbc.Driver"); //STEP 3: Open a connection System.out.println("Connecting to a selected database..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("Connected database successfully..."); //STEP 4: Execute a query System.out.println("Creating statement..."); stmt = conn.createStatement(); String sql = "SELECT id, first, last, age FROM Registration"; ResultSet rs = stmt.executeQuery(sql); //STEP 5: Extract data from result set while(rs.next()){ //Retrieve by column name int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last = rs.getString("last"); //Display values System.out.print("ID: " + id); System.out.print(", Age: " + age); System.out.print(", First: " + first); System.out.println(", Last: " + last); } rs.close(); }catch(SQLException se){ //Handle errors for JDBC se.printStackTrace(); }catch(Exception e){ //Handle errors for Class.forName e.printStackTrace(); }finally{ //finally block used to close resources try{ if(stmt!=null) conn.close(); }catch(SQLException se){ }// do nothing try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }//end finally try }//end try System.out.println("Goodbye!"); }//end main }//end JDBCExample

Muy buen tutorial aquí: http://www.tutorialspoint.com/jdbc/

ResultSetMetaData meta = resultset.getMetaData(); // for a valid resultset object after executing query Integer columncount = meta.getColumnCount(); int count = 1 ; // start counting from 1 always String[] columnNames = null; while(columncount <=count){ columnNames [i] = meta.getColumnName(i); } System.out.println (columnNames.size() ); //see the list and bind it to TableModel object. the to your jtbale.setModel(your_table_model);


Puede obtener esta información de los metadatos de ResultSet . Ver ResultSetMetaData

p.ej

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); String name = rsmd.getColumnName(1);

y puedes obtener el nombre de la columna desde allí. Si lo haces

select x as y from table

entonces rsmd.getColumnLabel() también obtendrá el nombre de la etiqueta recuperada.



import java.sql.*; public class JdbcGetColumnNames { public static void main(String args[]) { Connection con = null; Statement st = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/komal", "root", "root"); st = con.createStatement(); String sql = "select * from person"; rs = st.executeQuery(sql); ResultSetMetaData metaData = rs.getMetaData(); int rowCount = metaData.getColumnCount(); System.out.println("Table Name : " + metaData.getTableName(2)); System.out.println("Field /tDataType"); for (int i = 0; i < rowCount; i++) { System.out.print(metaData.getColumnName(i + 1) + " /t"); System.out.println(metaData.getColumnTypeName(i + 1)); } } catch (Exception e) { System.out.println(e); } } }

Nombre de la tabla: persona ID del tipo de datos de campo VARCHAR cname VARCHAR dob FECHA


ResultSet rsTst = hiSession.connection().prepareStatement(queryStr).executeQuery(); ResultSetMetaData meta = rsTst.getMetaData(); int columnCount = meta.getColumnCount(); // The column count starts from 1 String nameValuePair = ""; while (rsTst.next()) { for (int i = 1; i < columnCount + 1; i++ ) { String name = meta.getColumnName(i); // Do stuff with name String value = rsTst.getString(i); //.getObject(1); nameValuePair = nameValuePair + name + "=" +value + ","; //nameValuePair = nameValuePair + ", "; } nameValuePair = nameValuePair+"||" + "/t"; }