Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java while(rs.next)数据库结果_Java_Database - Fatal编程技术网

Java while(rs.next)数据库结果

Java while(rs.next)数据库结果,java,database,Java,Database,为什么我只能从mysql数据库中得到最后一个结果?不管数据库中有什么元素?如何检索所有数据库行 代码如下: package database; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData;

为什么我只能从mysql数据库中得到最后一个结果?不管数据库中有什么元素?如何检索所有数据库行

代码如下:

package database;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONObject;


public class getData extends HttpServlet {

    private static final long serialVersionUID = 1L;

    Connection con;
    Statement stmt;
    ResultSet rs;
    Setzen setze = new Setzen();
    int zeilen;

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

        try{

            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ausgaben","***","***");
            stmt = con.createStatement();
            rs = stmt.executeQuery("SELECT * FROM ausgaben");
            ResultSetMetaData meta = rs.getMetaData();
            zeilen = meta.getColumnCount();

            while(rs.next())
            {
                setze.setAusgaben(rs.getString("Ausgaben"));
                setze.setVom(rs.getString("vom"));
                setze.setPreis(rs.getString("Preis"));
            }

            rs.close();
            stmt.close();
            con.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        System.out.println(setze.getAusgaben());
        PrintWriter out = response.getWriter();
        String data = "{\"sEcho\":" + 3 + ",\"iTotalRecords\":" + zeilen + ", \"iTotalDisplayRecords\":" + zeilen + ",\"aaData\":[["+"\""+setze.getAusgaben()+"\""+","+"\""+setze.getVom()+"\""+","+"\""+setze.getPreis()+"\""+"]]}";
        System.out.println(data);
        out.print(data);
    }

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

提前谢谢。

看起来问题在于
Setzen
类的实现。我确信
setXXX()
方法不会追加数据,而是覆盖上次写入的数据


也可以,如果在java 7上考虑使用<代码>尝试资源,但这与你的问题无关。< /P> < p>你将所有结果保存到一个对象中,<代码> SETZE/CODE> 看起来您希望收集所有结果并将其作为某种JSON结构返回。你应该尝试这样的方法,使用。它避免了手动创建JSON输出时可能出现的巨大错误源

final JSONArray ja = new JSONArray();
while (rs.next()) {
   ja.put(new JSONObject()
       .put("Ausgaben", rs.getString("Ausgaben"))
       .put("vom",      rs.getString("vom"))
       .put("Preis",    rs.getString("Preis")));
}
response.getWriter().print(new JSONObject()
    .put("aaData", ja)
    .put("iTotalRecords", zeilen)
    .toString());
这将输出类似于
{“iTotalRecords”:3,“aaData:[{“Ausgaben”:“…”,“vom”:“…”,“Preis”:“…”},…”}

我还建议在出现异常时将错误发送回用户,而不是默默地忽略它

catch (SQLException e) {
    // TODO: log the exception
    // this is our fault, let the user know we failed
    response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    return;
}