# JSONArray/JSONObject MySQL-Servlet Abfrage



## legalizeSINCE88 (1. Jul 2014)

Hallo miteinander,


folgendes Problem:

Ich versuche eine DB Abfrage in einem Servlet  zu machen.
Die Ergebnisse will ich dann als JSON Format zurückgeben.
Jedoch bekomme ich keinerlei Antwort vom Server.
(DB,pw,etc stimmen).

Per Firebug kann ich sehen, das er mir den Fehler *" 500 Internal Server Error" *ausgibt.
Benutzer Tomcat.

Hier der Code:


```
package server;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.json.simple.JSONValue;


@WebServlet("/servlet")
public class servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
    public servlet() {
        super();
        
    }

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doGet(request, response);
	}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 
		 response.setContentType("application/json");
		 PrintWriter out = response.getWriter();
		
		 JSONObject responseData=new JSONObject();       
	        JSONArray jArray=new JSONArray();
	   
	     
		try {
			
			Class.forName("com.mysql.jdbc.Driver");
			
			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8080/xyz","****","****");
			PreparedStatement prepared = con.prepareStatement("Select * from personen");
			ResultSet rs = prepared.executeQuery();
			
			ResultSetMetaData rsmd = rs.getMetaData();
			int numberOfColumns = rsmd.getColumnCount();

			while(rs.next())
			{
				JSONObject jObject=new JSONObject();
				JSONArray Jarr = new JSONArray();
				Jarr.add(rs.getString("id"));
				Jarr.add(rs.getString("Name"));
				Jarr.add(rs.getString("Vorname"));
				Jarr.add(rs.getString("Wohnort"));
				Jarr.add(rs.getString("Geburtsalter"));
			    jObject.put("cell", Jarr);
			    jArray.add(jObject);
			}
			 responseData.put("total", 5);
		         responseData.put("page", 1);
		         responseData.put("records",numberOfColumns);
		     
			 responseData.put("rows",jArray);
			
			 out.println(JSONValue.toJSONString(responseData));
			 
		} catch (Exception e) {
			out.write("Fehler");
			
		}
	}

}
```

Vielen Dank für (jede) Hilfe


----------



## eMmiE (3. Jul 2014)

link


----------



## turtle (3. Jul 2014)

> Benutzer Tomcat


Heisst das, dein Code läuft in einem Tomcat?

Wenn ja, kommen mir deine Verbindungsdaten merkwürdig vor, da mysql default auf 3306 läuft.

```
jdbc:mysql://localhost:8080/xyz
```

Ansonsten würde ich ein kleines Programm schreiben, das mal OHNE Tomcat läuft. 

Dann kannst du vergleichen, wo ein Unterschied ist. Häufige Fehlerursachen sind beispielsweise JDBC-Treiber dem TC nicht bekannt oder falsche Zugangsdaten der DB, oder..


----------

