Я хотел бы попросить вас о помощи. На моих нынешних навыках программирования на Java, которые являются довольно основными, эта проблема для меня волшебна. Позволь мне объяснить первое, что было мое намерение: Я хотел, чтобы загрузить данные из базы данных на вкладку под названием airportList объекта, и это вкладка объектов аэропорта инициализируется здесь:Ячейка объекта самообновления
public void init()
{
System.out.println("Applet inicialization ...");
mysqllink = new MySQLlink();
try {
mysqllink.getConnection();
} catch (SQLException e) {
System.out.println("Fuck you! Not connected!");
e.printStackTrace();
}
allAirportAmount = mysqllink.getNumerOfRows(tabela_lotnisk);
allAirlineAmount = mysqllink.getNumerOfRows(tabela_linii);
allAirplanesAmount = mysqllink.getNumerOfRows(tabela_samolotow);
allConnectionsAmount = mysqllink.getNumerOfRows(tabela_tras);
airportList = new Airport[allAirportAmount]; //Airport object tab
airportList2 = new String[allAirportAmount]; //as a test i put only Airport name from database over here to String tab
airlineList = new String[allAirlineAmount];
airplaneList = new String[allAirplanesAmount];
FlightConnectionFrame frame = new FlightConnectionFrame();
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(frameWidth,frameHeight);
frame.setVisible(true);
add(frame);
}
public static MySQLlink mysqllink = new MySQLlink();
public static int allAirportAmount;
public static int allAirlineAmount;
public static int allAirplanesAmount;
public static int allConnectionsAmount;
public static Airport airportList[]; // declaration over here
public static String airportList2[]; // and here as a test
public static String airlineList[];
public static String airplaneList[];
Ok, и как вы можете видеть, у меня есть 2 раза таблицы, список аэропортов объектов аэропорта и airportList2 строкового типа. В следующем фрагменте кода я загружать данные из базы данных в этих двух вкладках одновременно:
public void viewAirportList()
{
String query = "select id_lotniska, nazwa, lokalizacja, oplaty_lotniskowe from " + databaseName + "." + tabela_lotnisk;
Statement stmt = null;
try {
stmt = databaseConnection.createStatement();
ResultSet rs = stmt.executeQuery(query);
int j = 0;
while (rs.next()) {
int id_l = rs.getInt("id_lotniska");
String name = rs.getString("nazwa");
String loc = rs.getString("lokalizacja");
double tax = rs.getDouble("oplaty_lotniskowe");
flight_connections.FCApletCore.airportList[j] = new Airport(id_l, name, loc, tax); // this is where the Airport object is created and put into the AirportList tab
flight_connections.FCApletCore.airportList2[j] = name; // here, as a test - i put only String value of name to AirportList2 tab
j++;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (stmt != null) { try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Это как класс Аэропорт выглядит следующим образом:
public class Airport {
public Airport(int i, String n, String l, double o)
{
airport_id = i;
airport_name = n;
airport_localization = l;
airport_tax = o;
System.out.println(" > new object created:" + airport_name);
}
public int getAirportId(){return airport_id;}
public String getAirportName(){return airport_name;}
public String getAirportLocalization(){return airport_localization;}
public double getAirportTax(){return airport_tax;}
public static int airport_id;
public static String airport_name;
public static String airport_localization;
public static double airport_tax;
}
И используя 2x дЛЯ чтобы получить то, что внутри обеих вкладок в консоли:
System.out.println("*** Airport objects tab: airportList ***");
for (int i=0; i<flight_connections.FCApletCore.allAirportAmount; i++)
{
System.out.println("airportList[" + i + "]: " + flight_connections.FCApletCore.airportList[i].getAirportName());
}
System.out.println("*** String values tab: airportList2 ***");
for (int i=0; i<flight_connections.FCApletCore.allAirportAmount; i++)
{
System.out.println("airportList2[" + i + "]: " + flight_connections.FCApletCore.airportList2[i]);
}
результат является:
Applet inicialization ...
Connecting database...
Database connected!
loading number of records from database table: lotniska ...
loading number of records from database table: linie ...
loading number of records from database table: samoloty ...
loading number of records from database table: trasy ...
> new object created:Port Lotniczy Balice
> new object created:Port lotniczy Paryż Charles de Gaulle
> new object created:Port Lotniczy Heathrow
> new object created:Port Lotniczy O'Hare
> new object created:Port Lotniczy Dubaj
> new object created:Port lotniczy Berlin-Brandenburg
> new object created:Port lotniczy San Francisco
> new object created:Port lotniczy Tokio-Haneda
*** Airport objects tab: airportList ***
airportList[0]: Port lotniczy Tokio-Haneda
airportList[1]: Port lotniczy Tokio-Haneda
airportList[2]: Port lotniczy Tokio-Haneda
airportList[3]: Port lotniczy Tokio-Haneda
airportList[4]: Port lotniczy Tokio-Haneda
airportList[5]: Port lotniczy Tokio-Haneda
airportList[6]: Port lotniczy Tokio-Haneda
airportList[7]: Port lotniczy Tokio-Haneda
*** String values tab: airportList2 ***
airportList2[0]: Port Lotniczy Balice
airportList2[1]: Port lotniczy Paryż Charles de Gaulle
airportList2[2]: Port Lotniczy Heathrow
airportList2[3]: Port Lotniczy O'Hare
airportList2[4]: Port Lotniczy Dubaj
airportList2[5]: Port lotniczy Berlin-Brandenburg
airportList2[6]: Port lotniczy San Francisco
airportList2[7]: Port lotniczy Tokio-Haneda
И если вы посмотрите на это, вкладка Строка в порядке, а на вкладке Аэропорт не так как он загружен только один - последний из записей из базы данных и как вкладки загружаются в две строки кода рядом друг с другом, у меня нет кода, который может каким-то образом изменить значения первой вкладки. Чтобы проверить, правильно ли созданы объекты аэропорта, я добавил System.out.println
с именем созданного объекта и что вы можете видеть в результатах как правильные значения. Я добавлю, что я запускаю это как апплет, что может предложить init()
.
Я немного изменил код на английские имена, но значения базы данных и имена таблиц по-польски, например, в консоли вы видите «Port lotniczy», что означает «Аэропорт».
* «Я хотел бы попросить у вас о помощи». * 1) Пожалуйста, используйте правильное написание слов типа «ты», «твой» и «пожалуйста». Это облегчает людям понимание и помощь. 2) Пожалуйста, добавьте письмо в верхнем регистре в начале предложений. Также используйте капитал для слова I, аббревиатуры и аббревиатуры, такие как JEE или WAR. Это облегчает людям понимание и помощь. –
1) Чтобы получить более эффективную помощь, опубликуйте [SSCCE] (http://sscce.org/). 2) Пожалуйста, не забудьте добавить '?' на вопросы! Некоторые люди выполняют поиск на странице «?» и если ни один из них не существует в «вопросе», переходите непосредственно к следующему (фактическому) вопросу в очереди. –
JB Nizet идеально подходит. На данный момент atlist вы можете сделать статические переменные экземпляра класса AirPort для Non Static. Это поможет вам понять вашу проблему. – Ketan