0

Hi everyone, I need help in my school project which requires me to send data from a mobile application to a database table. The inputs for the table data is through textfield and when i press the submit button, it will send the input fields into the database table. Will be appreciated if anyone is there to help me.. thanks

Here are my current codes, I am only able to retreive data from the table but unable to send over.

Client

package web;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.HttpConnection;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;

public class EnrollmentClient extends MIDlet implements CommandListener {

    Display display;
    private boolean commandAvailable;
    CommandThread commandThread;
    Form registerForm;
    Form inputForm;
    Form outputForm;
    TextField idNum;
    TextField name;
    TextField nirc;
    TextField contact;
    TextField email;
    TextField l1r4;
    StringItem appResults;
    Command cmdBack;
    Command cmdQuit;
    Command cmdSend;
    Command cmdSelect;
    Command cmdSubmit;
    private static final String send =
            "jdbc:mysql://localhost:3306/student_info?"
            + "user=root&password=password";
    private static final String retrieve =
            "http://localhost:8084/EnrollmentServlet/EnrollmentServlet"
            + "?nirc=";
    List mainMenu;
    String[] options = {"Apply for Courses", "Check Application Status", "Exit"};

    public EnrollmentClient() {

        mainMenu = new List("Main Menu", Choice.IMPLICIT, options, null);
        mainMenu.setCommandListener(this);
        cmdSelect = new Command("Select", Command.SCREEN, 1);
        mainMenu.addCommand(cmdSelect);


        display = Display.getDisplay(this);

        registerForm = new Form("Registration Form");
        name = new TextField("Name:", null, 25, TextField.ANY);
        nirc = new TextField("NIRC:\n", null, 9, TextField.ANY);
        contact = new TextField("Contact:\n", null, 12, TextField.PHONENUMBER);
        email = new TextField("Email:\n", null, 20, TextField.EMAILADDR);
        l1r4 = new TextField("L1R4:\n", null, 9, TextField.NUMERIC);



        registerForm.append(name);
        registerForm.append(nirc);
        registerForm.append(contact);
        registerForm.append(email);
        registerForm.append(l1r4);

        cmdSubmit = new Command("Submit", Command.SCREEN, 1);
        registerForm.addCommand(cmdSubmit);
        registerForm.setCommandListener(this);


        inputForm = new Form("Check Application Status");
        idNum = new TextField("NIRC Number: ", null, 9, TextField.ANY);
        inputForm.append(idNum);
        cmdSend = new Command("Send", Command.SCREEN, 1);
        cmdQuit = new Command("Quit", Command.EXIT, 1);
        inputForm.addCommand(cmdSend);
        inputForm.addCommand(cmdQuit);
        inputForm.setCommandListener(this);

        outputForm = new Form("Application Status");
        appResults = new StringItem(null, null);
        outputForm.append(appResults);
        cmdBack = new Command("Back", Command.BACK, 1);
        outputForm.addCommand(cmdBack);
        outputForm.addCommand(cmdQuit);
        outputForm.setCommandListener(this);

        commandAvailable = false;
        commandThread = new CommandThread(this);
        commandThread.start();

    }

    public void startApp() {

        display.setCurrent(mainMenu);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {

        switch (mainMenu.getSelectedIndex()) {
            case 0:
//Go work on
                display.setCurrent(registerForm);
                break;

            case 1:
                display.setCurrent(inputForm);

                break;

            case 2:
                destroyApp(false);
                notifyDestroyed();
                break;

        }
        if (c == cmdQuit) {
            display.setCurrent(mainMenu);
        } else if (c == cmdSend) {
            synchronized (this) {
                commandAvailable = true;
                notify();
            }
        } else if (c == cmdSubmit) {
        }
        /*
        if (c == cmdExit) {
        destroyApp(false);
        notifyDestroyed();
        } else if (c == cmdBack) {
        idNum.setString(null);
        display.setCurrent(inputForm);
        appResults.setText(null);
        } else if (c == cmdOK) {
        synchronized (this) {
        commandAvailable = true;
        notify();
        }
        }
         */
    }

    class CommandThread extends Thread {

        MIDlet parent;
        boolean exit = false;

        public CommandThread(MIDlet parent) {
            this.parent = parent;
        }

        public void run() {
            while (true) {
                synchronized (parent) {
                    while (!commandAvailable) {
                        try {
                            parent.wait();
                        } catch (InterruptedException e) {
                        }
                    }
                    commandAvailable = false;
                }

                getAppStatus();
            }
        }

        public void getAppStatus() {
            HttpConnection conn = null;
            InputStream is = null;
            OutputStream os = null;
            byte[] receivedData = null;
            try {
                StringBuffer sb = new StringBuffer(retrieve);
                sb.append(idNum.getString());
                System.out.println("String sent: " + sb.toString());
                conn =
                        (HttpConnection) Connector.open(sb.toString());
                conn.setRequestMethod(HttpConnection.GET);
                conn.setRequestProperty("User-Agent",
                        "Profile/MIDP-1.0 Configuration/CLDC-1.0");
                conn.setRequestProperty("Content-type",
                        "application/x-www-form-urlencoded");
                is = conn.openInputStream();
                String contentType = conn.getType();
                int len = (int) conn.getLength();
                if (len > 0) {
                    receivedData = new byte[len];
                    int nb = is.read(receivedData);
                } else {
                    receivedData = new byte[1024];
                    int ch;
                    len = 0;
                    while ((ch = is.read()) != -1) {
                        receivedData[len++] = (byte) ch;
                    }
                }
                appResults.setText(new String(receivedData, 0, len));
                display.setCurrent(outputForm);
            } catch (IOException e) {
                System.out.println(e.getMessage());
                e.printStackTrace();
            } finally {
                try {
                    if (is != null) {
                        is.close();
                    }

                    if (os != null) {
                        os.close();
                    }

                    if (conn != null) {
                        conn.close();
                    }
                } catch (IOException e) {
                }
            }
        }
    }
}

Servlet

mport java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

import java.sql.*;

public class EnrollmentServlet extends HttpServlet {

    static final String dbURL = "jdbc:mysql://localhost:3306/student_info?"
            + "user=root&password=password";

    public void doSend(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        Connection conn = null;

        response.setContentType("text/plain");
        PrintWriter outResponse = response.getWriter();

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new ServletException("Unable to load JDBC driver");
        }

        try {



            String userInputname = request.getParameter("full_name");
            String userInputNIRC = request.getParameter("nirc");
            String userInputcontact = request.getParameter("contact");
            String userInputemail = request.getParameter("email");
            String userInputl1r4 = request.getParameter("l1r4");

            conn = DriverManager.getConnection(dbURL);
            PreparedStatement ps = conn.prepareStatement("INSERT INTO info VALUES (?,?,?,?,?)");
          
            ps.setString(2, userInputname);
            ps.setString(3, userInputNIRC);
            ps.setString(4, userInputcontact);
            ps.setString(5, userInputemail);
            ps.setString(6, userInputl1r4);
     
            ps.execute();

            conn.close();
          
        } catch (SQLException e) {
            throw new ServletException("SQL call failed");
        } catch (Exception e) {
            throw new ServletException(e.getMessage());
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    throw new ServletException("connection close failed");
                }
            }
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        Connection conn = null;

        response.setContentType("text/plain");
        PrintWriter outResponse = response.getWriter();

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new ServletException("Unable to load JDBC driver");
        }

        try {

            String NIRC = request.getParameter("nirc");
            System.out.println("NIRC = " + NIRC);
            conn = DriverManager.getConnection(dbURL);

            Statement stmt = conn.createStatement();

            String query = "SELECT * "
                    + "FROM info " + "WHERE nirc = '"
                    + NIRC + "'";



            ResultSet rs = stmt.executeQuery(query);
            if (rs.next()) {
                outResponse.println(rs.getString(2));
                outResponse.println(rs.getString(3));
                outResponse.println(rs.getString(7));

            } else {
                outResponse.println("Record Not Found");
            }
            conn.close();
        } catch (SQLException e) {
            throw new ServletException("SQL call failed");
        } catch (Exception e) {
            throw new ServletException(e.getMessage());
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    throw new ServletException("connection close failed");
                }
            }
        }
    }
}

Thank you

1
Contributor
1
Reply
7
Views
7 Years
Discussion Span
Last Post by shock8
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.