将resultSet传递给Java方法

时间:2015-02-12 15:22:51

标签: java generics jdbc orm resultset

我尝试使用resultSet并将值传递给Java方法。我收到一个错误:INFORMATION:null

public static class WeatherInfo {
        private Date date;
        private int maxTemp;
        private int meanTemp;
        private int minTemp;
        private int dewPoint;
        private int d.......

构造

public WeatherInfo(String Date2, int maxTemp1, int meanTemp1,
                int minTemp1,......)

// I convert the database Date to sql.Date so that I can use it in Java:

java.sql.Date sqlDate = java.sql.Date.valueOf(Date2);

this.date = sqlDate;
this.maxTemp = maxTemp1;
this.meanTemp = meanTemp1;
.
.
.

一些方法:

}

        public Date getDate() {
            return date;
        }

        public int getMaxTemp() {
            return maxTemp;
        }

        public int getMeanTemp() {
            return meanTemp;
        } .....

获取数据:

private static List weatherData;

Query query = new Query();
        ResultSet rs = query.loadWeather();

        try {

            while (rs.next()) {
                Date Date1 = rs.getDate(1);
                int maxTemp1 = rs.getInt(2);
                int meanTemp1 = rs.getInt(3);
                int minTemp1 = rs.getInt(4);
                int dewPoint1 = rs.getInt(5);
                int meandewPoint....

                try {

                    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    // I convert the Date from the database to a String that I use in the  //Constructor.
                    String Date2 = df.format(Date1);



                    weatherData = Arrays.asList (

                            new WeatherInfo("2013-1-6", -4, -7, -9, -4, -8, -10, 100, 97, 93, 1027, 1023, 1021, 10, 9, 2, 16, 8, 29, 4, 7, 4, 74),


                            new WeatherInfo(Date2, maxTemp1, meanTemp1, minTemp1, dewPoint1, meanDewPoint1, ....)

                            );
                 } catch (ParseException pe) {
                     throw new RuntimeException("This should not happen!", pe);
                 }
             System.out.println(weatherData);

            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();}
        }

 public List<WeatherInfo> getWeatherData() {
        return weatherData;
    }

第一个硬编码的weatherInfo(&#34; 2013-1-6&#34;,-4,-7,-9,.....)正常工作。

第二个weatherInfo(Date2,maxTemp1,meanTemp1,.....)似乎无法正常工作。我不知道如何将resultSet传递给weatherInfo()

如何将resultSet作为变量正确传递给weatherInfo()?

HINTS:

我在使用

时从resultSet获取值
System.out.println(Date2); // returns 2013-01-01

这就是观点:

public ChartsTutorial() {

            // A layout structure used for composition

            final VerticalLayout mainLayout = new VerticalLayout();
            mainLayout.setMargin(true);

            ChartsData data = new ChartsData();

            mainLayout.addComponent(getWeatherChart(data));

            mainLayout.setSizeFull();

            setCompositionRoot(mainLayout);
        }

    private Chart getWeatherChart(ChartsData data) {
        Chart chart = new Chart();
        Configuration conf = chart.getConfiguration();
        conf.setTitle("Turku, Finland 2013");

        conf.getChart().setType(ChartType.LINE);

        BeanItemContainer<WeatherInfo> weatherContainer =
                new BeanItemContainer<WeatherInfo>(
                        WeatherInfo.class, data.getWeatherData());

        ContainerDataSeries temp = new ContainerDataSeries(weatherContainer);
        temp.setName("Temperature");
        temp.setXPropertyId("date");    // will call WeatherInfo.getDate()
        temp.setYPropertyId("maxTemp"); // will call WeatherInfo.getMaxTemp()

        conf.getxAxis().setTitle("Date");
        conf.getxAxis().setType(AxisType.DATETIME);
        conf.getyAxis().setTitle("Temperature (°C)");

        ContainerDataSeries humidity = new ContainerDataSeries(weatherContainer);
        humidity.setName("Humidity");
        humidity.setXPropertyId("date");            // will call WeatherInfo.getDate()
        humidity.setYPropertyId("meanHumidity");    // will call WeatherInfo.getMeanHumidity()
        humidity.setPlotOptions(new PlotOptionsColumn());

        weatherContainer.addContainerFilter(new Filter() {
            @Override
            public boolean passesFilter(Object o, Item item) throws UnsupportedOperationException {
                Date date = (Date)item.getItemProperty("date").getValue();
                return date.getDay() == 0;
            }

            @Override
            public boolean appliesToProperty(Object o) {
                return "date".equals(o);
            }
        });

        conf.addSeries(humidity);
        conf.addSeries(temp);

        YAxis humidityYAxis = new YAxis();
        humidityYAxis.setTitle("Humidity (%)");
        humidityYAxis.setMin(0);
        humidityYAxis.setMax(150);
        humidityYAxis.setOpposite(true);
        conf.addyAxis(humidityYAxis);
        humidity.setyAxis(humidityYAxis);

        return chart;
    }

问题: 新的WeatherInfo(&#34; 2013-1-6&#34;,-4,-7,-9,.....)被正确绘制。 新的WeatherInfo(Date2,maxTemp1,meanTemp1,minTemp1 ....)没有被绘制。

点击按钮后,第一个新的WeatherInfo()被绘制,第二个没有。我在Eclipse控制台中看到了这个: 2015年2月12日下午5:16:08 com.example.project.LoginView buttonClick 信息:null

数据库表:

-- Table: "WeatherData"

-- DROP TABLE "WeatherData";

CREATE TABLE "WeatherData"
(
  date date NOT NULL,
  "maxTemp" integer,
  "meanTemp" integer,
  "minTemp" integer,
  "dewPoint" integer,
  "meanDewPoint" integer,
  "minDewPoint" integer,
  "maxHumidity" integer,
  "meanHumidity" integer,
  "minHumidity" integer,
  "maxSeaLevelPressure" integer,
  "meanSeaLevelPressure" integer,
  "minSeaLevelPressure" integer,
  "maxVisibility" integer,
  "meanVisibility" integer,
  "minVisibility" integer,
  "maxWindSpeed" integer,
  "meanWindSpeed" integer,
  "maxGustSpeed" integer,
  precipitation integer,
  "cloudCover" integer,
  events integer,
  "windDirection" integer,
  CONSTRAINT id PRIMARY KEY (date)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "WeatherData"
  OWNER TO postgres;

可能是ORM映射问题,我不知道。我很感激任何暗示或想法。再次感谢。

更新号码3:

我添加了更多新的WeatherInfo数据用于测试目的。实际上,只有第一个新的WeatherInfo(&#34; 2013-1-6&#34;,-4,...)被读取和绘制。这很奇怪。所以是的,错误可能与列表有关......

weatherData = Arrays.asList (

                            new WeatherInfo("2013-1-6", -4, -7, -9, -4, -8, -10, 100, 97, 93, 1027, 1023, 1021, 10, 9, 2, 16, 8, 29, 4, 7, 4, 74),
                            new WeatherInfo("2013-1-7", -5, -6, -3, -4, -8, -10, 103, 91, 98, 1011, 1010, 1012, 12, 3, 5, 13, 5, 25, 6, 1, 2, 44),
                            new WeatherInfo("2013-1-8", 1, 0, 0, 1, 0, 0, 100, 98, 93, 1021, 1015, 1013, 10, 7, 1, 13, 10, 27, 3, 8, 3, 230),
                            new WeatherInfo(Date2, maxTemp1, meanTemp1, minTemp1, dewPoint1, meanDewPoint1,....) 
                            );

0 个答案:

没有答案