Переменная возврата Java для меню выбора уровня MySQL - PullRequest
0 голосов
/ 04 июня 2018

МОЯ ТЕКУЩАЯ БАЗА ДАННЫХ ищет :

Я хочу спросить вас, почему это не работает У меня есть процедура CALL_MAP

SELECT map
FROM level
WHERE level.id = map_choice

В моем коде Java: Iя пытаюсь выставить меню выбора для "выбора уровня"

else if (this.getView().getHome().getPanEdit().getButton_choice_2_home().getChoice() == 2) {

        int map_choice = (int) JOptionPane.showInputDialog(null, "Choose a Map!", "Lorann-MapSelector",
                JOptionPane.QUESTION_MESSAGE, null, LEVEL_LIST, LEVEL_LIST[0]);
      if (map_choice > 5) {
        System.exit(0);
    }
    /*Here is our switch with its choices*/
    switch (map_choice) {
    case 1:
    ControllerFacade.this.map_choice = 1;
    case 2:
    ControllerFacade.this.map_choice = 2;
    case 3:
    ControllerFacade.this.map_choice = 3;

    case 4:
    ControllerFacade.this.map_choice = 4;   

    case 5:
    ControllerFacade.this.map_choice = 5;   
        //Default, its an error
    default:
    ControllerFacade.this.map_choice = 4;   

    }

Теперь предполагается прочитать выбор карты и установить для map_choice значение 1, и база данных должна признать, что я прошу получить карту, гдеID = 1, пока он вернет 1

Но результат:

Champ 'map_choice' неизвестен в предложении

Это не нормально?Я все еще получаю сообщение об ошибке, не знаю, как и почему?

МОЙ КОД ЧИТАНИЯ БАЗЫ ДАННЫХ:

package dao;

import java.sql. *;

открытый класс LorannDAO {

private static  String URL = "jdbc:mysql://localhost/lorann? autoReconnect=true&useSSL=false&useUnicode=true&useJDBC"
            + "CompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
private static String LOGIN = "root";
private static String PASSWORD = "";

public Connection connection;
public Statement statement;



public static String getMAPQuery(int map_choice) {
     return "call CALL_MAP(" + map_choice + ");";
}


public LorannDAO () {

this.connection = null;
this.statement = null; 

}

public boolean open () {

    System.out.println("opening a connection");

    try {
    Class.forName("com.mysql.cj.jdbc.Driver");
    this.connection = DriverManager.getConnection(LorannDAO.URL,LorannDAO.LOGIN, LorannDAO.PASSWORD);

    this.statement = this.connection.createStatement();

    } catch (final ClassNotFoundException e) {
    e.printStackTrace();
    return false;
    } catch (final SQLException e) {
    e.printStackTrace();
    return false;
    }
    return true;
}


public void close () {

    System.out.println("closing a connection");

    if ( connection != null )
    try 
    {
    connection.close();
    } 
    catch ( SQLException ignore ) 
    {
    }
}


public String getMAp (int map_choice) throws SQLException {

final ResultSet resultSet = this.executeQuery(getMAPQuery(map_choice));

String map = ""; 

if (resultSet.first()) {
    map = resultSet.getString("map");
}

 return map;

}

private ResultSet executeQuery (String query_p) throws SQLException{

    ResultSet retur = this.statement.executeQuery(query_p);

    return retur;

}
}

Также код, из которого я пытаюсь получить ID выбора:

private int map_choice ;

/**
 * Instantiates a new model facade.
 * @throws IOException 
 */
public ModelFacade() throws IOException, SQLException 
{
    super();
    this.DAO = new LorannDAO();
    this.DAO.open();
    this.Map = new map(this.DAO.getMAp(map_choice));
    this.DAO.close();
}

public void connection () 
{
    this.DAO.open();
    try {
        this.Map.setMap(this.DAO.getMAp(map_choice));
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    this.DAO.close();
}

public map getMap() 
{
    return Map;
}

public void setMap(map map)
{
    Map = map;
}

@Override
public int getMap_choice() 
{
    return map_choice;
}

@Override
public void setMap_choice(int map_choice) 
{
    this.map_choice = map_choice;
}

1 Ответ

0 голосов
/ 04 июня 2018

Для вашего кода у меня есть два предложения:

  1. Вам необходимо добавить break в ваш блок switch case, иначе ваша программа не будет работать должным образом.

  2. Не называйте вашу переменную как map_choice, используя mapChoice вместо

...