java examples
Home Java Examples Resources Java Interview Questions
Brainpower SEO

How to know the designated column's table name?

package com.javacoderanch.example.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class TableNameExample {
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost/testdb";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";
    
    public static void main(String[] args) throws Exception {
	Connection connection = null;
	try {
	    Class.forName(DRIVER);	    
	    connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
	    
	    Statement statement = connection.createStatement();
	    String query = "SELECT a.id, a.username, a.country_id, b.country_name "
	    		+ "FROM users a " 
	    		+ "LEFT JOIN countries b "
	    		+ "ON a.country_id = b.id";
	    ResultSet resultSet = statement.executeQuery(query);
	    
	    //
	    // Here we have a query that use multiple table, we then want to 
	    // know to which table a column is belong to. In the ResultSetMetaData
	    // there is a getTableName() method that can do this functionality.
	    //
	    ResultSetMetaData metadata = resultSet.getMetaData();
	    
	    String tableName = metadata.getTableName(1);
	    System.out.println("Table name of column 'id' = " + tableName);
	    
	    tableName = metadata.getTableName(4);
	    System.out.println("Table name of column 'country name' = " + tableName);	    
	} catch (SQLException e) {
	    e.printStackTrace();
	} finally {
	    connection.close();
	}
    }
}