zewnętrzna baza danych niewłaściwe wysłanie zapytań.

0

Witam,

napisałem program z wykorzystaniem MySQL (zainstalowanym na moim komputerze). Wszystko ładnie pięknie śmiga do momentu kiedy chciałem sprawić aby mój program korzystał z zewnętrznej bazy danych (może w przyszłości mógłbym udostępnić swój program innym).

Założyłem sobie konto na https://vipserv.org/ i tam założyłem bazę danych w raz z tabelą. Wprowadziłem ręcznie niewielką ilość danych i uruchomiłem aplikację swoją. Błędu z połączeniem się z bazą danych nie ma ale już z wysłaniem zapytania do niej owszem.

public void queryingRead(String query)
    {
        try
        {
            rs = st.executeQuery(query);

        } catch (Exception e1)
        {
            System.out.println("Problem z wyslaniem zapytania do bazy MySQL");
        }
    }

i wysyłam do niego owe zapytanie

SELECT * FROM login WHERE login='rafal201988'

i niestety wywala mi wyjątek

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException

niewiele z tego rozumiem tym bardziej że rekord z polem login = rafal201988 istnieje na miliard %.

Dodam że to zapytanie na MySQL działa poprawnie na komputerze.

0

Błąd jest w innym miejscu. Weźże łaskawie kliknij na tego stacktrace bo masz tam podana konkretą linię kodu przecież gdzie coś poszło nie tak.

0

jest podana oczywiście

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at sample.MySQL.checkUser(MySQL.java:57)

a wskazana linia to warunek

try {
            if (rs.next()) { // -> tą linie kodu wskazuje
                user = rs.getString(2);
                pass = rs.getString(3);
            }
            if (user.equals(userName) && pass.equals(password)) {
                return true;
            } else
                return false;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }

tyle że wywala mi wcześniej wyjątek z metody queryingRead (wyświetla napisz z System.out.println)

0

OMG no to zamiast wypisywać tam jakis komunikat z d**y który nic ci nie mówi, zrób po prostu e.printStackTrace(), bo wtedy przynajmniej dowiemy się jaki błąd poleciał w komunikacji z bazą danych...

0

wynika z tego (jak dobrze rozumiem) że jednak nie mam połączenia z bazą danych

java.sql.SQLException: No database selected
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2503)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1369)
at sample.MySQL.queryingRead(MySQL.java:24)
at sample.MySQL.checkUser(MySQL.java:52)

public boolean conectionDataBase(String nameBase, String userName, String password)
    {
        try
        {
            con = (Connection) DriverManager.getConnection(nameBase, userName, password);

            st = (Statement) con.createStatement();

            return true;

        } catch (SQLException ex)
        {
            JOptionPane.showMessageDialog(null,"Błąd z połączeniem się z bazą danych!!!");
            return false;
        }
    }

wywołanie

 connectMySQL = mySql.conectionDataBase("jdbc:mysql://mysql-251555.vipserv.org",userName,password);

w czasie tworzenia bazy danych wyczytałem:
Dla tego konta adres do połączeń z zewnątrz (tylko) to mysql-251555.vipserv.org

tylko jak tu teraz podać nazwę bazy danych?

druga sprawa moja metoda do łączenia się z bazą danych zwraca true - czyli niby wszystko poszło ok...

0

problem rozwiązany - źle dodało mi użytkownika bazy danych na serwerze

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