• 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

0 głosów
114 wizyt
pytanie zadane 5 lipca 2018 w Java przez Patryk8090 Początkujący (420 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 Początkujący (420 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 Początkujący (420 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 Początkujący (420 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 Początkujący (420 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ź 156 wizyt
0 głosów
1 odpowiedź 81 wizyt
pytanie zadane 2 marca w PHP, Symfony, Zend przez Kedholt Początkujący (320 p.)
0 głosów
1 odpowiedź 75 wizyt
pytanie zadane 10 lutego w SQL, bazy danych przez veryape Początkujący (480 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

66,324 zapytań

113,061 odpowiedzi

239,218 komentarzy

46,589 pasjonatów

Przeglądających: 257
Pasjonatów: 7 Gości: 250

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...