import java.awt.*;
import java.sql.*;

class queryFrame extends Frame
{
        Button b;
        TextArea t;
        List l;
        TextField tDSN;

        queryFrame()
        {
                setLayout(new GridLayout(7, 1));
                setTitle("JDBC on-the-fly SQL application");
                b = new Button("Click to execute query");
                t = new TextArea(20, 40);
                tDSN = new TextField(40);
                l = new List();
                add(new Label("Enter your ODBC data source name here"));
                add(tDSN);
                add(new Label("Enter your query here..."));
                add(t);
                add(b);
                add(new Label ("and peruse your results here"));
                add(l);
        }

        public boolean handleEvent(Event e)
        {
                if (e.id == Event.WINDOW_DESTROY) System.exit(0);
                return super.handleEvent(e);
        }

        public boolean action (Event e, Object o)
        {
                if (e.target == b)
                        {
                        do_sql();
                        //l.addItem(t.getText());
                        }
                return super.action(e, o);
                
        }

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


        try{

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

        stmt = con.createStatement();

                                                //replace with contents of textbox
        query = t.getText();
        rs = stmt.executeQuery(query);

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

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

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

        while (more) {

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

        }

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

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

        }

        

}
