Jak otrzymać datę z JSpinner'a w formacie "rrrr-mm-dd&q

0

Wyjaśnię jak to wszystko u mnie działa:

Jest aplikacja połączona z bazą danych. Pobieram wartość JSpinnera (są dwa: START i KONIEC):

start = (String) jSpinner1.getValue().toString();
koniec = (String) jSpinner1.getValue().toString();

i zapisuje do zmiennych. Pozniej zmienne przekazuję do metody:

String test(String start,String koniec){
    String query ="SELECT kiedy, salary FROM employees WHERE kiedy >="+start+"and kiedy <="+koniec+" ORDER BY kiedy";
    return query;
}

... w wyniku otrzymuję kwerendę ktora wędruje do innej metody

Problemem jest to ze zeby to wszystko działało format wyjsciowy z JSpinnera musi mieć postać : "RRRR-MM-DD", a jest tak ze jak pobieram wartosc tak :start = (String) jSpinner1.getValue().toString(); to mam to w formacie "Thu Jun 29 20:40:00 CEST 2006"

0

Za pomocą tego Stringa możesz utworzyć obiekt Calendar i z niego pobrać datę w interesującym formacie.

0

Pobierz z JSpinnera Date ((Date) JSpinner.getValue()) a pozniej utworz sobie SimpleDateFormat i uzyj ktorejstam metody ktora bierze date i wypluwa string w formacie z jakim utworzyles formattera.

0

Dzieki za pomoc dalem rade ...ale dalej przeszkoda

metoda wyrzuca mi daty tak jak trzeba i w ten sposob powstaje mi kwerenda w posataci

SELECT kiedy, salary FROM employees WHERE kiedy >= 2010-02-01 and kiedy <= 2010-04-45 ORDER BY kiedy"

... i to jest moj problem poniewaz data powinna mieć postać nie 2010-02-10 a '2010-02-10' bo dopiero wtedy "widzi" to jako datę

0

Ogolnie to robisz to zle dlatego ze sam sklejasz zapytanie. Zrob parametry:
select costam from costam where kiedy < :kiedy
Query czy to hibernatowe cos ma metody do ustawiania parametrow w stylu:
query.setParameter("kiedy", kiedy)
tak samo ma dla Calendar, stringow intow itp. Tego powinienes uzyc, poniewaz jest bezpieczniejsze, pozbywasz sie takich problemow, no i nie jest podatne na sql injection.

0

ogólnie jak nie używasz frameworka to proponuje takie coś jak PreparedStatement, ma właśnie metody set różnych typów

0

Racja, jakos mi sie zmieszaly ostatnie posty i myslalem ze chodzi tutaj o Hibernate. Sory za zamieszanie; wskazowka na temat PreparedStatement jest oczywiscie dobra.

0

Chlopaki ogolnie chce stworzyc metode ktora mi bedzie zwracala kwerende jako String bo mam takie ograniczenie ze storny JDBCCategoryDataset

JDBCCategoryDataset( PolaczenieDoBazyDanych, KWERENDA);
KWERENDA musi być Stringiem

Poczytalem o PreparedStatement i zeby utworzyc obiekt to musze mu podac polaczenie do bazy. Wychodzi maslo maslane bo polaczenie do bazy juz mam zadeklarowane w JDBCCategoryDataset.

0

Dlaczego koniecznie musisz używać tego konkretnego rozwiązania?
JFreeChart ma otwarty kod. Możesz spróbować na podstawie tej klasy stworzyć własną, która rozszerzy ją o obsługę PreparedStatement. Nie powinno to być jakieś ekstremalnie trudne.
http://jfreechart.svn.sourcef[...]revision=2194&view=markup

Kod źródłowy klasy. Niestety trzeba zrobić kopiuj wklej dużej części, bo jest spieprzony design (jednak obróbkę rezultatów wywalił bym do osobnej metody). No ale, będzie czas to i podeślę tam moją poprawkę

//edit: dałem poprawny link do trunka

0

Dzięki koziołek ze rozszerzenie JDBCCategoryDataset [browar]...
Mam jedno pytanko. Jeżeli metoda wygląda :

public class JDBCCategoryDataset extends DefaultCategoryDataset {
...
public JDBCCategoryDataset(Connection connection, PreparedStatement statement) throws SQLException 
{
    this(connection);
    executeQuery(statement);
}

to metoda ktora tworzy PreparedStatement powinna wygladać tak ? :

public PreparedStatement ask(String start, String koniec) throws SQLException
    {
            Connection con = null;
            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);

            return prepState;
    }

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