Java 从数据库获取数据并存储在arraylist中的程序

Java 从数据库获取数据并存储在arraylist中的程序,java,Java,ConnectDB(类名) package com.apt.JDBC; 导入java.sql.*; 导入java.util.ArrayList; 导入java.util.Collections; 公共类连接数据库{ //JDBC驱动程序名称和数据库URL 静态最终字符串JDBC_DRIVER=“com.mysql.JDBC.DRIVER”; 静态最终字符串DB_URL=“jdbc:mysql://mydb/TECH_TEST_DB"; //数据库凭据 静态最终字符串USER=“”; 静态最终字符

ConnectDB(类名)

package com.apt.JDBC;
导入java.sql.*;
导入java.util.ArrayList;
导入java.util.Collections;
公共类连接数据库{
//JDBC驱动程序名称和数据库URL
静态最终字符串JDBC_DRIVER=“com.mysql.JDBC.DRIVER”;
静态最终字符串DB_URL=“jdbc:mysql://mydb/TECH_TEST_DB";
//数据库凭据
静态最终字符串USER=“”;
静态最终字符串传递=”;
公共静态void main(字符串[]args){
连接conn=null;
语句stmt=null;
Mjcet-m;
试一试{
//步骤2:注册JDBC驱动程序
Class.forName(“com.mysql.jdbc.Driver”);
//步骤3:打开连接
System.out.println(“连接到数据库…”);
conn=DriverManager.getConnection(DB_URL,USER,PASS);
//步骤4:执行查询
System.out.println(“创建语句…”);
stmt=conn.createStatement();
字符串sql;
sql=“从MJCET中选择*”;
结果集rs=stmt.executeQuery(sql);
ArrayList mj=新的ArrayList();
m=新的Mjcet(0);
while(rs.next()){
//按列名检索
m、 setId(rs.getInt(“Empid”);
m、 设置(rs.getInt(“年龄”);
m、 setName(rs.getString(“Name”);
m、 固定工资(卢比“工资”);
mj.加上(m);
对于(Mjcet str:mj){
系统输出打印项次(str);
}
//集合。排序(mj);
}
rs.close();
stmt.close();
康涅狄格州关闭();
}捕获(SQLSE异常){
//处理JDBC的错误
se.printStackTrace();
}捕获(例外e){
//处理Class.forName的错误
e、 printStackTrace();
}最后{
//最后是用于关闭资源的块
试一试{
如果(stmt!=null)
stmt.close();
}捕获(SQLException se2){
}//我们无能为力
试一试{
如果(conn!=null)
康涅狄格州关闭();
}捕获(SQLSE异常){
se.printStackTrace();
}//结束最后一次尝试
}//结束尝试
System.out.println(“再见!”);
}//端干管
}//第一个例子结束
Mjcet.java
包com.apt.JDBC;
公共类Mjcet//
{
私人互联网;
私人薪酬;
私有字符串名称;
私有int-id;
公共Mjcet(整数年龄、整数工资、字符串名称、整数id){
超级();
这个。年龄=年龄;
这个。薪水=薪水;
this.name=名称;
this.id=id;
}
Mjcet(国际年龄){
这个。年龄=年龄;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
public int getSalary(){
返回工资;
}
公共无效设置薪资(内部薪资){
这个。薪水=薪水;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
//公共国际比较(Mjcet m1){
//int compareid=(Mjcet)m1.getId();
/*升序*/
//返回此.id-compareid;
//}
@凌驾
公共字符串toString(){
返回字符串。格式(“%d\t%s\t%d\t%d”,年龄、姓名、id、薪水);
}
}

以上是我的代码


我的输出有一个错误。基本上我得到了多次输出,例如我的emp id是1,它被打印了1次,当我的emp id是2,它被打印了2次,以此类推。。。。。。。请帮我解决这个问题。

您的问题是在循环外部实例化“m”,您应该在循环内部执行此操作,否则每次迭代都使用相同的对象

需要。main(..)在哪里?您好,欢迎来到Stack Overflow,请花点时间浏览以了解您在这里的道路(以及赢得您的第一个徽章),阅读如何创建并检查,以增加获得反馈和有用答案的机会。
package com.apt.JDBC;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;

public class ConnectDB  {
   // JDBC driver name and database URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://mydb/TECH_TEST_DB";

   //  Database credentials
   static final String USER = "";
   static final String PASS = "";

   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   Mjcet m ;
   try{
      //STEP 2: Register JDBC driver
      Class.forName("com.mysql.jdbc.Driver");

      //STEP 3: Open a connection
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);

      //STEP 4: Execute a query
      System.out.println("Creating statement...");
      stmt = conn.createStatement();
      String sql;



     sql="SELECT * FROM MJCET";
     ResultSet rs = stmt.executeQuery(sql);


     ArrayList<Mjcet> mj = new ArrayList<Mjcet>();
      m = new Mjcet(0);



      while(rs.next()){
         //Retrieve by column name

         m.setId(rs.getInt("Empid"));
        m.setAge(rs.getInt("Age"));

         m.setName(rs.getString("Name"));

         m.setSalary(rs.getInt("Salary"));
         mj.add(m);
         for(Mjcet str: mj){
            System.out.println(str);
         }

   //  Collections.sort(mj);


      }


      rs.close();
      stmt.close();
      conn.close();

   }catch(SQLException se){
      //Handle errors for JDBC
      se.printStackTrace();
   }catch(Exception e){
  //Handle errors for Class.forName
      e.printStackTrace();
   }finally{
      //finally block used to close resources
      try{
         if(stmt!=null)
            stmt.close();
      }catch(SQLException se2){
      }// nothing we can do
      try{
            if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }//end finally try
   }//end try
   System.out.println("Goodbye!");
}//end main
}//end FirstExample



Mjcet.java



package com.apt.JDBC;


public class Mjcet //implements  Comparable<Mjcet>
{

        private int age;
        private int salary;
        private String name;
        private int  id;



        public Mjcet(int age, int salary, String name, int id) {
            super();
            this.age = age;
        this.salary = salary;
        this.name = name;
        this.id = id;
    }
    Mjcet(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    // public int compareTo(Mjcet m1) {

    //   int compareid=((Mjcet)m1).getId();
            /* For Ascending order*/
        //    return this.id-compareid;
        //}


     @Override
     public String toString() {
        return String.format("%d\t%s\t%d\t%d", age,name,id,salary);
     }

}