• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Baza danych i Java

Object Storage Arubacloud
0 głosów
907 wizyt
pytanie zadane 5 lipca 2018 w Java przez Patryk8090 Użytkownik (520 p.)
zamknięte 9 lipca 2018 przez Patryk8090

Witam. Postanowiłem nauczyć się korzystania z bazy danych w Javie, ponieważ dużo pracodawców tego oczekuje. (no bo dlaczego mam sobie życia nie ułatwić? :D ) No to pisze. Mam prosty kodzik. Ale też mam problem. Połączenie z bazą jest, etc. Tylko ona nie wyświetla. I przychodzę do was z nadzieją, że wytłumaczycie mi dlaczego nie wykonuje swojego zadania. Dzięki wielkie! Pozdrawiam.

 

import javax.swing.*;
import java.sql.*;

public class Driver {

    static String dataBase;

    static String link = "jdbc:mysql://localhost:3306/demo";
    static Connection connection = null;
    static String query = "select * from test";

    public static void main(String args[]){
        try {
            connection = DriverManager.getConnection(link, "root", "12345"); // <- set connection
            Class.forName("com.mysql.jdbc.Driver"); // <- driver

            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                Show(resultSet);
            }

        }catch (ClassNotFoundException e){
            System.out.println("class not found");
        }catch (SQLException e){
            System.out.println("error sql: " + e);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static void Show(ResultSet rs){

        try{
                dataBase = rs.getString(1);
                JOptionPane.showMessageDialog(null, dataBase);
                dataBase = rs.getString(2);
                JOptionPane.showMessageDialog(null, dataBase);
                dataBase = rs.getString(3);
                JOptionPane.showMessageDialog(null, dataBase);
                dataBase = rs.getString(4);
                JOptionPane.showMessageDialog(null, dataBase);

        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

 

komentarz zamknięcia: Pytanie zostało rozwiązane.
komentarz 5 lipca 2018 przez Tomasz Rogalski Bywalec (2,800 p.)
Próbowałeś zamienić JOptionPane.showMessageDialog  na System.out.println? Oczywiście w celu diagnostycznym. Będziemy wiedzieli czy to z dialogiem coś nie tak czy z czymś innym.
komentarz 5 lipca 2018 przez Patryk8090 Użytkownik (520 p.)
Najpierw było System.out.println(). Program się wykonał bez błędnie ale nic nie wyświetlił

1 odpowiedź

0 głosów
odpowiedź 6 lipca 2018 przez Tomasz Rogalski Bywalec (2,800 p.)

Czyli mamy problem, że baza nie zaciąga poprawnie danych. Próbowałeś:

rs.getInt("id") zamiast z tymi cyframi 1/2/3/4?

Po za tym w javie metody piszemy z małej. A po catch napisz finally{

 conn.close();

} albo użyj try-with-rsources

komentarz 8 lipca 2018 przez Patryk8090 Użytkownik (520 p.)
Wiem, przyzwyczajenie takie mam już, że pisze z duzych. Nawet lepiej mi się patrzy, które są moje a które są z bibliotek Javy.
Co do problemu. Nie działa dalej. Nawet zauważyłem jakby metoda się w ogóle nie wykonywała.
komentarz 8 lipca 2018 przez Patryk8090 Użytkownik (520 p.)

a jak wyciągam metodę z pętli powstaje taki błąd:

 

java.sql.SQLException: Illegal operation on empty result set.
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
	at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:790)
	at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2475)

 

komentarz 9 lipca 2018 przez Tomasz Rogalski Bywalec (2,800 p.)
class Example {

    static String dataBase;

    static Connection connection = null;
    static String query = "select * from test";

    public static void main(String args[]) {
        try {
            connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "postgres", "hasło");
            Class.forName("org.postgresql.Driver");

            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                show(resultSet);
            }

        } catch (ClassNotFoundException e) {
            System.out.println("class not found");
        } catch (SQLException e) {
            System.out.println("error sql: " + e);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void show(ResultSet rs) {

        try {
            System.out.println(rs.getLong(1));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Użyłem twojego kodu tyle że na innej bazie (postgresql) i działa.
Pytanie do Ciebie: co znaczy że nie wyświetla? Robisz selecta na odpowiedniej bazie? Bo to już ustaliliśmy, kod jest w porządku. Szukaj błędu gdzieś bardziej w stronę bazy.

komentarz 9 lipca 2018 przez Patryk8090 Użytkownik (520 p.)

Ja.... bazę źle zrobiłem surprise

nie było tematu! Dzięki za pomoc !

komentarz 9 lipca 2018 przez Tomasz Rogalski Bywalec (2,800 p.)
Ciesze się że się wyjaśniło. Zamknij temat:)

Podobne pytania

0 głosów
1 odpowiedź 461 wizyt
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 2 marca 2019 w PHP przez Kedholt Początkujący (480 p.)
0 głosów
1 odpowiedź 424 wizyt
pytanie zadane 10 lutego 2019 w SQL, bazy danych przez veryape Użytkownik (580 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...