/*
 * Created on Aug 03, 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author yuhu
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
	import java.sql.DriverManager;
	import java.sql.Connection;
	import java.sql.ResultSet;
	import java.sql.Statement;
	import java.sql.*;
	import java.util.*;

	public class DbUtil{
		
	    private Connection con = null;
	    
	    public void connect() 
	    {
		String url = "jdbc:oracle:thin:@limani.cs.uchicago.edu:1521:cs51024";

			try{
		           	Class.forName("oracle.jdbc.OracleDriver"); 
				con = DriverManager.getConnection(url, "cspp51035", "cspp51035");
			}
			catch (Exception e) { e.printStackTrace(); }
		     
	    }
	  
	    	   
	    public void getdb () 
	    {	      
	       try {
		    		    
			
			int		SizeOfColumn = 0; 
			int		IndexOfColumn =0; 
			int		HowmanyRows = 0; 
			int		VectorSize = 0; 
			int		i=0; 
			int		j=0; 
			String	oneField;
			String	oneElement; 
			boolean		further; 

	       	PreparedStatement ps = con.prepareStatement("select * from pollution ");
		    	       	
		    //execute the prepared statement
	       	ResultSet res = ps.executeQuery();
		    
	       	further = res.next();

		if ( !further)
		{
			System.out.println("No Rows");
			return;			
		}


			ResultSetMetaData rsmd = res.getMetaData(); 
			int numberOfColumns = rsmd.getColumnCount(); 
	       	
			Vector 	AllFields[];
			
			AllFields = new Vector[numberOfColumns];
			
			while ( further)
			{
				HowmanyRows ++; 				

				for ( i=0; i< numberOfColumns ; i++)
				{
					oneField = res.getString(i+1);
					oneElement = new String(oneField );
					
					if ( HowmanyRows  == 1)
					{
						AllFields[i] = new Vector(1,1); 
						AllFields[i].addElement(oneElement);
					}
					else
					{
						AllFields[i].addElement(oneElement);
					}
				}

				further = res.next();
			}
	       		       	


			//VectorSize  = AllFields[0].capacity();
			
			//System.out.println(VectorSize  );
			//System.out.println(HowmanyRows );
			//System.out.println(numberOfColumns );



			Vector		oneRow; 
			Vector		oneColumn;
			LinkedList		Alldata = new LinkedList();


			for ( i=0; i<HowmanyRows ; i++)
			{
				oneRow = new Vector(numberOfColumns );
				for ( j=0; j<numberOfColumns ; j++)
				{
					oneColumn = AllFields[j];
					oneField = (String)(oneColumn.get(i)); 
					
					oneRow.add(j, oneField); 
				}
				
				Alldata.add(oneRow);

			}


			int			ListSize = Alldata.size();

			//System.out.println(ListSize );


			// Print out the content in this list
			String			oneDisplayRow; 

			for ( i=0; i< ListSize ; i++)
			{
				
				oneDisplayRow = ""; 
				oneRow = (Vector)(Alldata.get(i));
				
				//oneDisplayRow = oneRow.toString();

				for ( j=0; j<numberOfColumns ; j++)
				{
					oneField = (String)(oneRow.get(j));
					oneDisplayRow  = oneDisplayRow + oneField + "	"; 
				}

				System.out.println(oneDisplayRow );

			}



		      ps.close();
	            con.close(); 
	        }
		   catch (Exception e) { e.printStackTrace(); }
	      
		}
	    
	    
	    public static void main(String[] args)
		{
	    		DbUtil 		myDb = new DbUtil();
	    		int			pipiage;
	    	
	    	
	    		myDb.connect();
	    		myDb.getdb();
	    	
	    		    	
		}
	    
	    
	}

	

