


import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;

public class SQLServer extends Thread
{
	public static final int MYPORT = 6700;
	ServerSocket listen_socket;
	
        public SQLServer()
	{
		try{
			listen_socket = new ServerSocket (MYPORT);
			
		}
		catch(IOException e) {System.err.println(e);}
		this.start();
	}
	public void run()
	{
		try{
			while(true)
			{
				Socket client_socket = listen_socket.accept();
                                SQLConnection c = new SQLConnection (client_socket);
			}
		}
		catch(IOException e) {System.err.println(e);}
	}
	public static void main(String[] argv)
	{
                new SQLServer();
	}
}

class SQLConnection extends Thread
{
	protected Socket client;
	protected DataInputStream in;
	protected PrintStream out;
        protected String query;

        public SQLConnection (Socket client_socket)
	{
		client = client_socket;
		try{
			in = new DataInputStream(client.getInputStream());
			out = new PrintStream (client.getOutputStream());
		}
		catch(IOException e) 
		{
		 	System.err.println(e);
			try {client.close();} 
			catch (IOException e2) {};
			return;
		}
		this.start();

	}

	public void run()
	{
		try{
		
                                query = in.readLine();
                                System.out.println("read query string <" + query + ">");
                                do_sql();
                                //out.println(d.toString());
		
		}
		catch (IOException e) {}
		finally
		{
			try {client.close();}
			catch (IOException e) {};

		}


	}
        public void do_sql()
        {
        Connection con; // database connection object
        Statement stmt; // SQL statement object 
        ResultSet rs;   // SQL query results
        ResultSetMetaData rsmd;
        boolean more;   // "more rows found" switch
        String dsn = "jdbc:odbc:NWIND"; 
        String user = "admin"; 
        String password = "";
        String record;
        int colcount, i;


        try{

        Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection(dsn, user, password);

        stmt = con.createStatement();

        rs = stmt.executeQuery(query);

        more = rs.next(); 
        if (!more) {

            out.println("No rows found."); 
            return;

        }
        rsmd = rs.getMetaData();
        colcount = rsmd.getColumnCount();
        System.out.println(colcount + " columns in result set");

        while (more) {

                //build result string
            record = "";
            for (i=1; i <= colcount; i++)
            {
                record = record.concat(rs.getString(i) + "  ");
            }
            out.println(record);
            System.out.println(record);
            more = rs.next();

        }

        rs.close(); 
        stmt.close();

        con.commit(); 
        con.close();
        }
        catch (Exception e)
        {
                System.out.println("Exception occurred" + e.toString());
        }

        }


}
