1

私のAndroidアプリケーションでは、次のコードを使用して、特定のテーブルのデータ全体をコピーしています。しかし、サーブレットの出力を確認すると、重複した値が生成されているようです。次のコードを実行することで、これを確認できます。なぜこれが起こったのか分かりません。サーブレットからアプリケーションにJSONオブジェクトとして値を渡す必要があります。

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;

public class vlgmas extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        // TODO output your page here
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet vlgmas</title>");  
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Servlet vlgmas at " + request.getContextPath () + "</h1>");
        out.println("</body>");
        out.println("</html>");

    } finally {            
        out.close();
    }
}


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
     try {

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet Pickvalue</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Servlet Pick at " + request.getContextPath () + "</h1>");
        doPost(request,response);
        out.println("</body>");
        out.println("</html>");

    } finally
    {
        out.close();
    }
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //processRequest(request, response);
    String vname = null,vcode=null,divsec=null;
    JSONObject obj = new JSONObject();
    List list = new ArrayList();
    JSONObject obj2 = new JSONObject();
    PrintWriter out = response.getWriter();
    String vn[]=new String[2000],vc[]=new String[2000],ds[]=new String[2000];
    int t,r1=0,r2=0,r3=0;
    try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.200:1521:pdsm", "test", "test");
    Statement stmt=conn.createStatement();

        {
        ResultSet rs = stmt.executeQuery("select * from cn_vlgmas");
        while(rs.next())
        {
            //vn[r1++]=rs.getString ("vlgname");
            //vc[r2++]=rs.getString("vlgcode");
            //ds[r3++]=rs.getString("divsec");
            vname=rs.getString ("vlgname");
            vcode=rs.getString("vlgcode");
            divsec=rs.getString("divsec");
            obj.put("vname",vname);
            obj.put("vcode",vcode);
            obj.put("divsec",divsec);
            list.add(obj);
            obj2.accumulate("get", list);
            out.println(obj2);
        }
       /*for(t=0;t<r1;t++)
           {
            //out.println(vn[t]+","+vc[t]+","+ds[t]+" ");
            obj.put("vname",vn[t]);
            obj.put("vcode",vc[t]);
            obj.put("divsec",ds[t]);
            list.add(obj);
            //obj.append("rec", obj);
            //out.println(list);
            //obj.accumulate("get", list);
            //out.println(obj);
            obj2.accumulate("get", obj);
            //out.println(obj2);
            }*/


        }

    }catch(Exception e)
    {
        out.println("error"+e.toString());
    }
}


@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>
}

誰か助けてくれませんか。

4

2 に答える 2

0

この次のステートメントをwhileループから移動します

  out.println(obj2);

また

JSonObject使用する代わりにJSONArray

于 2013-01-31T09:01:24.700 に答える
0

user2021114による変更

追加

obj = new JSONObject();

whileループで

while(rs.next())
    {
            obj = new JSONObject();
            vname=rs.getString ("vlgname");
            vcode=rs.getString("vlgcode");
            divsec=rs.getString("divsec");
            obj.put("vname",vname);
            obj.put("vcode",vcode);
            obj.put("divsec",divsec);
            list.add(obj);

    }
obj2.accumulate("get", list);
out.println(obj2); 
于 2013-01-31T09:12:48.520 に答える