Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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 将数据库记录存储到列表中_Java_Database_Jsp_Resultset - Fatal编程技术网

Java 将数据库记录存储到列表中

Java 将数据库记录存储到列表中,java,database,jsp,resultset,Java,Database,Jsp,Resultset,如何将数据库记录放入ArrayList?我想在jsp文件中查看它。但是,ArrayList中所有对象的值与我选择的数据库中的最后一条记录相同 我的项目中有以下代码: IPBean.java public class IPBean { private String ip; private String userName; private String password; private int maxRetry; public String get

如何将数据库记录放入ArrayList?我想在jsp文件中查看它。但是,ArrayList中所有对象的值与我选择的数据库中的最后一条记录相同

我的项目中有以下代码:

IPBean.java

public class IPBean {
    private String ip;
    private String userName;
    private String password;
    private int maxRetry;    

    public String getIp() {
        return ip;
    }    
    protected void setIp(String ip) {
        this.ip = ip;
    }    
    public String getUserName() {
        return userName;
    }    
    protected void setUserName(String userName) {
        this.userName = userName;
    }    
    public String getPassword() {
        return password;
    }    
    protected void setPassword(String password) {
        this.password = password;
    }    
    public int getMaxRetry() {
        return maxRetry;
    }    
    protected void setMaxRetry(int maxRetry) {
        this.maxRetry = maxRetry;
    }    
}
import java.sql.*;
import java.util.ArrayList;

public class IPBeanMapper {
    public ArrayList<IPBean> getIPList() throws SQLException, ClassNotFoundException {
        ArrayList<IPBean> ipList = new ArrayList<IPBean>();
        Connection conn = null;
        conn = ConnectionTools.getConnection();
        String SQL = "SELECT * FROM LIST_IPM";
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery(SQL);
        IPBean ipBean = new IPBean();

        while (rs.next()){

            ipBean.setIp(rs.getString("IP"));
            ipBean.setMaxRetry(rs.getInt("NUM_OF_RETRY"));
            ipBean.setPassword(rs.getString("PASSWORD"));
            ipBean.setUserName(rs.getString("USERNAME"));

            ipList.add(ipBean);

        }
        ConnectionTools.attemptClose(rs);
        ConnectionTools.attemptClose(statement);
        ConnectionTools.attemptClose(conn);
        System.out.print(ipList.size());
        return ipList;
    }
}
while (rs.next()){ 
IPBean ipBean = new IPBean();   
.
.
IPBeanMapper.java

public class IPBean {
    private String ip;
    private String userName;
    private String password;
    private int maxRetry;    

    public String getIp() {
        return ip;
    }    
    protected void setIp(String ip) {
        this.ip = ip;
    }    
    public String getUserName() {
        return userName;
    }    
    protected void setUserName(String userName) {
        this.userName = userName;
    }    
    public String getPassword() {
        return password;
    }    
    protected void setPassword(String password) {
        this.password = password;
    }    
    public int getMaxRetry() {
        return maxRetry;
    }    
    protected void setMaxRetry(int maxRetry) {
        this.maxRetry = maxRetry;
    }    
}
import java.sql.*;
import java.util.ArrayList;

public class IPBeanMapper {
    public ArrayList<IPBean> getIPList() throws SQLException, ClassNotFoundException {
        ArrayList<IPBean> ipList = new ArrayList<IPBean>();
        Connection conn = null;
        conn = ConnectionTools.getConnection();
        String SQL = "SELECT * FROM LIST_IPM";
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery(SQL);
        IPBean ipBean = new IPBean();

        while (rs.next()){

            ipBean.setIp(rs.getString("IP"));
            ipBean.setMaxRetry(rs.getInt("NUM_OF_RETRY"));
            ipBean.setPassword(rs.getString("PASSWORD"));
            ipBean.setUserName(rs.getString("USERNAME"));

            ipList.add(ipBean);

        }
        ConnectionTools.attemptClose(rs);
        ConnectionTools.attemptClose(statement);
        ConnectionTools.attemptClose(conn);
        System.out.print(ipList.size());
        return ipList;
    }
}
while (rs.next()){ 
IPBean ipBean = new IPBean();   
.
.
import java.sql.*;
导入java.util.ArrayList;
公共类IPBeanMapper{
public ArrayList getIPList()抛出SQLException、ClassNotFoundException{
ArrayList ipList=新的ArrayList();
连接conn=null;
conn=ConnectionTools.getConnection();
String SQL=“从列表中选择*_IPM”;
语句Statement=conn.createStatement();
ResultSet rs=语句.executeQuery(SQL);
IPBean=newIPBean();
while(rs.next()){
setIp(rs.getString(“IP”);
setMaxRetry(rs.getInt(“NUM_OF_RETRY”);
setPassword(rs.getString(“PASSWORD”);
setUserName(rs.getString(“用户名”);
添加(ipBean);
}
连接工具。尝试关闭(rs);
ConnectionTools.attemptClose(语句);
连接工具。尝试关闭(康涅狄格州);
System.out.print(ipList.size());
返回ipList;
}
}
View.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" import="DSIP.*" import="java.util.ArrayList" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>DSIP.Insert</title>
</head>

<body>
<jsp:useBean id="ipList" scope="application" class="IPBeanMapper"/>
<jsp:useBean id="bean" scope="application" class="IPBean"/>
<form name="form1" method="post" action="viewServlet">
    <table width="" border="">
        <tr bgcolor="#0099FF">
            <td width="90"><div align="center">ip</div></td>
            <td width="90"><div align="center">username</div></td>
            <td width="90"><div align="center">password</div></td>
            <td width="90"><div align="center">maxRetry</div></td>
        </tr>
        <%
            ArrayList<IPBean> list;
            list = ipList.getIPList();
            for (int i = 0; i < list.size(); i++){
                bean = list.get(i);
        %>
        <tr>
            <td><input name="ip"        type="text" size="15" value="<%=list.getIp()%>"></td>
            <td><input name="userName"  type="text" size="15" value="<%=bean.getUserName()%>"></td>
            <td><input name="password"  type="text" size="15" value="<%=bean.getPassword()%>"></td>
            <td><input name="maxRetry"  type="text" size="15" value="<%=bean.getMaxRetry()%>"></td>
        </tr>
        <%
            }
        %>
    </table>
</form>
</body>
</html>

插入
知识产权
用户名
密码
最大重试
我的浏览器中的结果显示,第一条记录和第二条记录是相同的,但实际上并不相同。所以,请有人帮我显示数据库中的真实记录

要查看我的结果:

非常感谢你帮助我

致以最良好的祝愿


Faizal Rizky

您需要将这个
IPBean-IPBean=new-IPBean()内部while循环

因此,您的代码将成为-

IPBeanMapper.java

public class IPBean {
    private String ip;
    private String userName;
    private String password;
    private int maxRetry;    

    public String getIp() {
        return ip;
    }    
    protected void setIp(String ip) {
        this.ip = ip;
    }    
    public String getUserName() {
        return userName;
    }    
    protected void setUserName(String userName) {
        this.userName = userName;
    }    
    public String getPassword() {
        return password;
    }    
    protected void setPassword(String password) {
        this.password = password;
    }    
    public int getMaxRetry() {
        return maxRetry;
    }    
    protected void setMaxRetry(int maxRetry) {
        this.maxRetry = maxRetry;
    }    
}
import java.sql.*;
import java.util.ArrayList;

public class IPBeanMapper {
    public ArrayList<IPBean> getIPList() throws SQLException, ClassNotFoundException {
        ArrayList<IPBean> ipList = new ArrayList<IPBean>();
        Connection conn = null;
        conn = ConnectionTools.getConnection();
        String SQL = "SELECT * FROM LIST_IPM";
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery(SQL);
        IPBean ipBean = new IPBean();

        while (rs.next()){

            ipBean.setIp(rs.getString("IP"));
            ipBean.setMaxRetry(rs.getInt("NUM_OF_RETRY"));
            ipBean.setPassword(rs.getString("PASSWORD"));
            ipBean.setUserName(rs.getString("USERNAME"));

            ipList.add(ipBean);

        }
        ConnectionTools.attemptClose(rs);
        ConnectionTools.attemptClose(statement);
        ConnectionTools.attemptClose(conn);
        System.out.print(ipList.size());
        return ipList;
    }
}
while (rs.next()){ 
IPBean ipBean = new IPBean();   
.
.
问题是同一对象引用正在添加到列表中。因此,所有初始条目都与您的上一条记录相同。

更改

   IPBean ipBean = new IPBean(); 

    while (rs.next()){

这将为每行创建新实例,这是必需的,否则它将在单个实例中保持覆盖数据

    IPBean ipBean = new IPBean();

    while (rs.next()){

        ipBean.setIp(rs.getString("IP"));

您需要为每一行创建一个新实例。将
新IPBean
移动到循环内部。否则,您将在列表中多次使用同一实例,并使用上一次迭代中设置的值。

我认为您不必将整个

ipBean bean = new IPBean();
进入循环。那将是一种糟糕的做法。申报

ipBean-ipBean

while(rs.next()){
      bean = new ipBean();
} 

嗯,非常感谢@Thilo我现在明白了:)