Dynamiczne tworzenie kwerendy - pomoc

0

Witam

Chce stworzyc kwerende ktorej niektore elementy beda zmieniane podczas dzialania aplikacji np:

public static final String QUERY_ENERGY_LOCAL =
      "SELECT WHEN, VALUE " +
        "FROM LOCAL " +
         "WHERE WHEN >=" + START + "and WHEN <= " + END +  " +
         "ORDER BY kiedy";

zmienne START i END będą zmieniane na podstawie JSpinnera. Zastanawiałem się czy nie pobrać wszystkiego to Mapy, Listy i poźniej się z tym bawić ale tak chyba będzie szybciej ...choc nie wiem czy da się to tak zrobic.
0

Możesz wykorzystać preparedStatement;

public void ask(String x, int y){
String sql = "Selet * from Srvnc where x=? AND y=?;";
PreparedStatement prepState = connection.prepareStatement(sql);
prepState.setString(1, x);
prepState.setInt(2, y);
ResultSet executeQuery = prepState.executeQuery();
//...
}

Swoja droga prznieś zapytanie do osobnego pliku XML lub properties i wczytuj je przy starcie aplikacji. Będzie można w razie czego łatwo zmienić RDBMS i dostosować zapytania.

0

... kurcze jest problem bo akurat tu nie moge uzyc void'a (ask)

final CategoryDataset barDataset =
            new JDBCCategoryDataset( databaseAccess.getOracleDbConnection(),
                                     ask("10-02-22","10-03-03" ); 

PreparedStatement wyglada tak...

  public void ask(String start, String koniec) {
        try {
            Connection con = databaseAccess.getOracleDbConnection();
            String sql = "SELECT kiedy, salary FROM employees " + "WHERE kiedy >= ?  and kiedy <= ? and department_id = 100" + "ORDER BY kiedy";
            PreparedStatement prepState = con.prepareStatement(sql);
            prepState.setString(1, start);
            prepState.setString(2, koniec);
            prepState.executeQuery();
        } catch (SQLException ex) {
            Logger.getLogger(HrChartCreator.class.getName()).log(Level.SEVERE, null, ex);
        }

}
0

Ale to był tylko przykładowy kod. To co wyprodukuje executeQuery, to możesz później zwrócić lub przekazać do metody obrabiającej wynik.

0

Koziołek, sluchaj nie chodzi oto ze nie moge dac ask tylko ze w tym miejscu nie moge uzyc metody. (void)

0

O której metodzie mówimy?

public ResultSet  ask(String  x, int y){
  String sql = "Selet * from Srvnc where x=? AND y=?;";
  PreparedStatement prepState = connection.prepareStatement(sql);
  prepState.setString(1, x);
  prepState.setInt(2, y);
  return prepState.executeQuery();
}

Co za problem zrobić tak?

0

kurcze doczytałem w dokumantacji JfreeChat'a

47.2 JDBCCategoryDataset
47.2.1 Overview
A category dataset that reads data from a database via JDBC. The data is cached in memory, and
can be refreshed at any time.
47.2.2 Constructors
You can create an empty dataset that establishes its own connection to the database, ready for
executing a query:
å public JDBCCategoryDataset(String url, String driverName,
String userName, String password);
Creates an empty dataset (no query has been executed yet) and establishes a database connection.
Alternatively, you can create an empty dataset that will use a pre-existing database connection:
å public JDBCCategoryDataset(Connection con);
Creates an empty dataset (no query has been executed yet) with a pre-existing database connection.
If you want to initialise the data via the constructor, rather than creating an empty dataset:
å public JDBCCategoryDataset(Connection con, String query);
Creates a dataset with a pre-existing database connection and executes the specified query.

1 użytkowników online, w tym zalogowanych: 0, gości: 1