staging.inyokaproject.org

MySql und JDBC // Keine Connection möglich

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

andyr

Anmeldungsdatum:
14. April 2019

Beiträge: Zähle...

Ich habe ein Verbindungsproblem zu meiner localen Datenbank. Der Versuch eine Java Klasse zu schreiben und auf eine MySql Datenbnak zu connecten funktioniert immer nicht. Hatte anfangs mit der H2 Mem Datenbank gearbeitet, da hatte ich bereits Fehler beim connecten. Jedoch wollte ich mit der H2 Mem nur testen wie die Funktionsweise ist. Nun wollte ich dies in MySql umsetzten und scheitere erbärmlich ..

#Java Class

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Database {

    public static boolean createConnection() throws Exception{

        try {

            //Datenbanktreiber laden
            //Obtional seit JDBC 4
            //Class.forName("org.")

            System.out.println("Treiber Laden");
            //Datenbankverbindung herstellen
            //old Treiber Class.forName("com.mysql.jdbc.Driver");
            Class.forName("com.mysql.cj.jdbc.Driver");

            final String dbUrl  = "jdbc:mysql:///localhost/Java2DB";

            System.out.println("After Connection");

            final String dbUser = "andy";
            final String dbPw = "pw";


            Connection conn = null;
            Statement stmt = null;
            ResultSet rstmt = null;


            System.out.println("Bevor open Connection");
            //Verbindung öffnen
            conn = DriverManager.getConnection(dbUrl,dbUser,dbPw);

            System.out.println("After Connection");

            //Sql Befehlsobject erstellen
            stmt = conn.createStatement();

            System.out.println("Bevor auslesen");

            //Sql abfrage ausführen
            rstmt = stmt.executeQuery("SELECT * FROM Austeller");

            int[] sqlList = new int[4];

            System.out.println("Nach auslesen");


            sqlList[0] = rstmt.getInt("ID");
            sqlList[1] = rstmt.getInt("usageHalle");
            sqlList[2] = rstmt.getInt("period");
            sqlList[3] = rstmt.getInt("modelle");


            System.out.println(sqlList[0] + " " + sqlList[1] + " " +
                    sqlList[3] + " " + sqlList[4] );


            return true;
        }

        catch (Exception e){
            return false;
        }
    }

}

#Shell ausgabe

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Java2DB            |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

#Fehler Konsolenausgabe

Keinen, sondern nur die Test Ausgaben

1
2
3
> Treiber Laden
> After Connection
> Bevor open Connection

Ich benutze IntelliJ Ultimate , und wen ich darüber eine Datenbank einfügen will (mysql) und eine TestConnection ausführe, schlägt dies immer fehl. Ich benutze auserdem Maven und habe die dependency hinzzugefügt für MySql Connector.

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>

für hilfreiche Antworten bin ich Dankbar ☺

andyr

(Themenstarter)

Anmeldungsdatum:
14. April 2019

Beiträge: Zähle...

Falles es jemanden Interessiert... ich musste die MySql Time_Zone auf '+3:00' stellen.

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

andyr schrieb:

        catch (Exception e){
            return false;
        }

Hallo andyr,

wie du angibst, hast du die Fehlerursache bereits gefunden, weshalb ich dabei nicht mehr groß helfen kann. Beim Lesen deines Quelltextes ist mir allerdings aufgefallen, dass du dich einerseits bemüht hast, die Fehlerposition mittels Debug-Ausgaben einzugrenzen, aber letzten Endes dein hierbei bestes Pferd im Stall (Exceptions) komplett ausblendest, indem du ein Catchall auf Exceptions setzt. Zumindest gehe ich davon aus, dass der JDBC-Treiber von mysql sich entsprechend äußert, wenn etwas beim Verbindungsaufbau nicht klappt.

Antworten |