JDBC Rückgabe der Ergebnisse per Writer an das Client-Programm?

  • Ich versuche, ein mySQL-Ergebnis an mein Client-Programm zurückzugeben. Ich denke, es ist keine Verbindung, da ich den Verbindungsfehler zurückgeben kann, aber ich glaube, dass alle Einstellungen korrekt sind, und haben sie zuvor für eine PHP-Verbindung verwendet?

    Hier ist der vollständige Code Das funktioniert total, wenn Sie nur einen String zurückgeben wollen:

     import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.net.*;
    
    public class TestDatabase extends HttpServlet {
    
        private static String message = "Error during Servlet processing";
        private static String inputStream;
        ResultSet rs;
    
        public void doPost(HttpServletRequest req, HttpServletResponse resp) {
            try {
                int len = req.getContentLength();
                byte[] input = new byte[len];
    
                ServletInputStream sin = req.getInputStream();
                int c, count = 0;
                while ((c = sin.read(input, count, input.length - count)) != -1) {
                    count += c;
                }
    
                sin.close();
                String inString = new String(input);
                int index = inString.indexOf("=");
                String value = inString.substring(index + 1);
                inputStream = URLDecoder.decode(value, "UTF-8");
    
            } catch (IOException e) {
    
            }
    
            try {
                responseWriter(resp);
            } catch (SQLException e) {
    
                e.printStackTrace();
            }
        }// end of requestReader
    
        public void responseWriter(HttpServletResponse resp) throws SQLException {
    
    
    
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql://server.co.uk:port/dbName?user=UserName&password=PassWord");
    
                Statement st = (Statement) con.createStatement();
                rs = st.executeQuery("SELECT * FROM MyTable;");
    
            } catch (Exception e){
                System.out.println("fail");
            }
    
            while (rs.next()){
                String output = rs.getString("column_name");
            }
    
            try {
                resp.setStatus(HttpServletResponse.SC_OK);
                OutputStreamWriter writer = new OutputStreamWriter(
                resp.getOutputStream());
                writer.write(output);
                writer.flush();
                writer.close();
    
            } catch (IOException e) {
    
            }
    
        }// end of responseWriter
    
    }// end of class
     

    EDIT: Ich glaube, es wird eine ClassNotFoundException ausgelöst.

    22 November 2011
    James MV
1 answer
  • In der öffentlichen void-Methode doPost () werfen Sie nicht aus. wirft SQLException, IOException

    22 November 2011
    kulss