Public Int показывает 0 при использовании в другом классе

У меня была эта точная проблема при разработке приложения Spring Boot в STS, но в конечном итоге развертывание упакованной войны в WebSphere (v.9). Основываясь на предыдущих ответах, моя ситуация была уникальной. ojdbc8.jar был в моей папке WEB-INF / lib с установленным набором родительского последнего класса, но всегда говорит, что не удалось найти подходящий драйвер.

Моя последняя проблема заключалась в том, что я использовал неправильный класс DataSource потому что я просто следил за онлайн-учебниками / примерами. Нашел подсказку благодаря тому, что Дэвид Дай прокомментировал свой собственный вопрос: Spring JDBC Не удалось загрузить класс драйвера JDBC [oracle.jdbc.driver.OracleDriver]

Также позже был найден весенний гуру пример с конкретным драйвером Oracle: https://springframework.guru/configuring-spring-boot-for-oracle/

Пример, который вызывает ошибку, используя org.springframework.jdbc.datasource.DriverManagerDataSource на основе общих примеров .

@Config
@EnableTransactionManagement
public class appDataConfig {
 \* Other Bean Defs *\
    @Bean
    public DataSource dataSource() {
        // configure and return the necessary JDBC DataSource
        DriverManagerDataSource dataSource = new DriverManagerDataSource("jdbc:oracle:thin:@//HOST:PORT/SID", "user", "password");
        dataSource.setSchema("MY_SCHEMA");
        return dataSource;
    }
}

И исправленный exapmle с использованием oracle.jdbc.pool.OracleDataSource:

@Config
@EnableTransactionManagement
public class appDataConfig {
/* Other Bean Defs */
@Bean
    public DataSource dataSource() {
        // configure and return the necessary JDBC DataSource
        OracleDataSource datasource = null;
        try {
            datasource = new OracleDataSource();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        datasource.setURL("jdbc:oracle:thin:@//HOST:PORT/SID");
        datasource.setUser("user");
        datasource.setPassword("password");

        return datasource;
    }
}

1
задан Flimzy 16 January 2019 в 07:17
поделиться

3 ответа

Конструктор по умолчанию срабатывает при создании нового экземпляра. Конструктор без параметров называется конструктором по умолчанию; другими словами, этот тип конструктора не принимает параметры. Недостаток конструктора по умолчанию заключается в том, что каждый экземпляр класса будет инициализирован одинаковыми значениями, и невозможно инициализировать каждый экземпляр класса разными значениями.

Конструктор по умолчанию инициализирует:

Все числовые поля в классе в ноль . Все строковые и объектные поля равны нулю .

Если вы хотите сохранить состояние типа & amp; значение для всех потребителей / клиентов или для нескольких экземпляров, просто установите его как статический тип.

0
ответ дан Gowtham Alan 16 January 2019 в 07:17
поделиться

Вы можете использовать статическое поле в Index классе, если вы хотите сохранить предыдущее значение

public static int ID1;

И вот как вы можете установить его значение вне класса

Index.ID1 = 23;
0
ответ дан Mehrdad Dowlatabadi 16 January 2019 в 07:17
поделиться

Я не вижу этого в коде, который вы предоставили, но на основании вашего описания мне кажется, что вы выполняете метод bLogin_Click и затем создаете новый экземпляр Index.

Этот новый экземпляр будет иметь значение по умолчанию ID1, равное 0 (если вы не установите его в конструкторе, который я не вижу). Поэтому вам нужно сначала создать экземпляр, , затем , выполнить bLogin_Click для этого экземпляра .

Также похоже, что вы присваиваете значение Result2, но затем выполняете проверку для Result.

Кроме того, на самом деле это не связано, но многие сочли бы плохой практикой для класса содержать открытое поле, вы должны рассмотреть использование вместо этого свойства, даже такого базового:

public int ID1 { get; private set; } [117 ]

0
ответ дан Michael G 16 January 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: