简体   繁体   English

我被困在一个 Java 程序中。 我的程序是一对多右外连接

[英]I am stuck in a Java program. My program is One To Many Right Outer Join

I am stuck in a Java program.我被困在一个 Java 程序中。 My program is One To Many Right Outer Join.我的程序是一对多右外连接。 I am trying to figure where my error is, but I couldn't find it by myself.我想弄清楚我的错误在哪里,但我自己找不到。

I tried to solve it so many times, but nothing happened.我试图解决它很多次,但没有任何反应。

I tried to change the database column name, it didn't work.我试图更改数据库列名,但没有用。 I tried to debug using Eclipse debugger, couldn't find any.我尝试使用 Eclipse 调试器进行调试,但找不到。

Details are attached below.详情附于下文。

MainClass.java主类.java

package OneToManyRightJoin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class MainClass {

    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","1234");
            Statement st=con.createStatement();
            java.sql.Statement st1=con.createStatement();
            java.sql.Statement st2=con.createStatement();
            
            String query1 ="SELECT * from person" ;
            String query2 ="SELECT * from address" ;
            
            ResultSet rs1=st1.executeQuery(query1);
            ResultSet rs2=st2.executeQuery(query2);   
    
    //for address   
            
            List<Address> addrList = new ArrayList<Address>();
            List<Person> personList = new ArrayList<Person>();
            
            while(rs1.next()) 
            {
            
              
            //List<Address> addrList = new ArrayList<Address>();     
                Address a=new Address();
                
                a.setPid(rs1.getInt("pid"));
                a.setAid(rs1.getInt("Aid"));
                a.setAddress1(rs1.getString("Ad1"));
                a.setAddress2(rs1.getString("Ad2"));
                addrList.add(a);
                
            }
     

    while(rs2.next()) 
    {
        Person p=new Person();
        p.setPid(rs2.getInt("pid")) ;
        p.setName(rs2.getString("name"));
        personList.add(p);
    }   
    
    //comparing 2 List(personList and addrList)
    
    List matchedList=new ArrayList<List>();
    
    for(int i=0;i<addrList.size();i++)
    {
        List innerPersonList = new ArrayList();
         
        Address pkgInnerAddress = (Address)addrList.get(i);
        
        for(int j=0;j<personList.size();j++)
        
        {                     
            
            if(addrList.get(i).getPid() == personList.get(j).getPid())         
            
            {
                Person innerPerson = personList.get(j);
                
                innerPersonList.add(innerPerson);
      
        }   
                                       
        
        }
   
       // add the list of matched addresses to person
       pkgInnerAddress.setLst(innerPersonList);
     
       matchedList.add(pkgInnerAddress);
       
    }   
   
 
  
    
 System.out.println("Right Outer join details" +"\n");
       
        for (int i=0; i<matchedList.size(); i++) {
            
            Address a = (Address)matchedList.get(i);
            
            System.out.println("\n" + "address details Id Ad1 Ad2 are "+a.getAid()+" "+a.getAddress1()+" "+a.getAddress2()+" "+a.getPid()+"\n");
            
        
            
            for (int j=0; j<a.getLst().size(); j++) {
                
                System.out.println(" Person Pid is " +a.getLst().get(j).getPid());  
            }
        
        }
    }
                   
catch (SQLException e)
    {
        System.out.println(e);          
    }   
    catch(ClassNotFoundException e1)
    {
        System.out.println(e1);     
}
}
}

Address.java地址.java

package OneToManyRightJoin;

import java.util.List;

public class Address {
    
    int aid;
    int Pid;
    String Address1;
    String Address2;
    List<Person>lst;
    public int getAid() {
        return aid;
    }
    public void setAid(int aid) {
        this.aid = aid;
    }
    public int getPid() {
        return Pid;
    }
    public void setPid(int pid) {
        Pid = pid;
    }
    public String getAddress1() {
        return Address1;
    }
    public void setAddress1(String address1) {
        Address1 = address1;
    }
    public String getAddress2() {
        return Address2;
    }
    public void setAddress2(String address2) {
        Address2 = address2;
    }
    public List<Person> getLst() {
        return lst;
    }
    public void setLst(List<Person> lst) {
        this.lst = lst;
    }
}

Person.java人.java

package OneToManyRightJoin;

public class Person 
{
    int pid;
    String Name;
    
    Person()
    {
        
    }

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }
}

These are my database details images.这些是我的数据库详细信息图像。

Address DB Person DB地址数据库人员数据库

Error Details:错误详情:

Error Details错误详情

You are facing error at this line:您在这一行遇到错误:

a.setAid(rs1.getInt("Aid")); a.setAid(rs1.getInt("Aid"));

The reason is you are setting the value of particular column in this scenario you are setting value of object a with Aid column.原因是您在这种情况下设置特定列的值,您正在设置带有 Aid 列的对象 a 的值。 But SQL says that Aid column you are using which is not presented it means you doesn't have any column which has name Aid into your database table.但是 SQL 表示您正在使用的 Aid 列未显示,这意味着您的数据库表中没有任何名称为 Aid 的列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我想用java程序发送电子邮件。 我得到如下的豁免权 - I want to send email using java program. I am getting the excetion as below noclassdeffounderror 在一个简单的网络程序中。 我正在使用 Eclipse IDE 运行 java 程序 - noclassdeffounderror in a simple networking program. I am using Eclipse IDE to run java programs 我在以下程序中得到OptionalDataException。 为什么会出现此错误 - I am getting OptionalDataException in the following Program. why this error is coming 我的表格程序有问题。 可以告诉我如何解决吗? - I have a problem with my table program. Could one tell me how to solve it? 绘图程序损坏。 Java的 - Broken drawing program. Java 员工计划。 JAVA基础 - Employee Program. JAVA basics Java 程序。 需要简化 public boolean equals (object B){ is to long。 我不知道如何减少程序那部分的编码 - Java Program. Need to simplified public boolean equals (object B){ is to long. I do not how to reduce the coding in that part of my program 我的python程序执行速度比同一程序的java版本快。是什么赋予了? - My python program executes faster than my java version of the same program. What gives? 无法运行我的java .exe程序。 我该如何解决? (“发生Java异常”)和JNI问题 - Can't run my java .exe program. How do I troubleshoot this ? (“A Java exception has occured”) and JNI problem 需要帮助在我的 Java 程序中集成一个 while 循环。 希望程序更好地处理错误输入 - Need help intgerating a while loop in my java program. Want the program to handle incorrect input better
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM