Announcement

Collapse
No announcement yet.

NullPointerException

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • NullPointerException

    Hi<br>
    Ich versuche mit JDBC und MySql zu arbeiten, durch tatkräftige Unterstützung in diesem Forum ist es mir gelungen einmal den Treiber zu laden, jetzt versuche ich eine Verbindung herzustellen, hier mein Code:<br><br>

    import java.sql.*;<br>
    <br>
    class Test{<br>
    Connection connection;<br>
    String url = "jdbc:mysql://localhost/MovieCatalog?user=Administrator=meinPassport";<br>
    Statement statement = null;<br>
    public Test(){<br>
    try{<br>
    Driver d = (Driver)Class.forName("org.gjt.mm.mysql.Driver").n ewInstance();<br>
    System.out.println("Version" + d.getMajorVersion()+"."+d.getMinorVersion());<br>
    }catch(Exception e){System.out.println("Could not find Driver");}<br>
    try{<br>
    connection = DriverManager.getConnection(url);<br>
    statement = connection.createStatement();<br>
    statement.executeUpdate("CREATE TABLE CATALOG(TITLE VARCHAR(256),LEAD_ACTOR VARCHAR(256),LEAD_ACTRESS VARHAR(256),TYPE VARCHAR(20)");
    }catch(SQLException e){System.out.println("Cant acces MovieCatalog");}<br>
    finally{<br>
    try{<br>
    connection.close();<br>
    }catch(SQLException e){}<br>
    }<br>
    }<br>
    public static void main(String[] args){<br>
    Test t = new Test();<br>
    }<br>

    }<br>
    <br>
    Fehler im Code gibt es nicht, nur wenn ich das programm ausführe bekomme ich die Meldung(Cant acces MovieCatalog),die Datenbank gibt es aber, und der MySql Server ist auch gestartet, die url hab so wie in den Docs zum Treiber beschrieben, ich hab auch schon versucht, Localhost und User sowie Passwort wegzulassen, das hat auch nichts gebracht,<br>
    Die Fehler Meldung ist:Exception in Thread "main" java.lang.NullPointerException at Test(init)(Test.java.19)<br>
    at Test.nain(Test.java:24)<br>
    <br>
    Falls mit jemand einen Hinweis geben könnte wäre ich sehr dankbar.<br><br>
    Gruß Othmar

  • #2
    Hi<br>

    <br>
    Ich habe das Problem schon fast selbst gelöst, wenigstens gibt es jetzt keine Exceptions mehr, aber wenn ich die Datenbank mit MySqlAdmin betrachte, ist keine neue Tabelle angelegt worden:<br><br>
    import java.sql.*;

    class Test{br>
    static String driver = "org.gjt.mm.mysql.Driver";<br>
    static String url = "jdbc:mysql:MovieCatalog";<br>
    Connection connection = null;<br>
    Statement statement = null;<br>
    <br>
    public void initialize() throws SQLException, ClassNotFoundException <br>
    {<br>
    Class.forName(driver);<br>
    connection = DriverManager.getConnection(url);<br>
    }<br>
    public void createTable() throws SQLException<br>
    {<br>
    statement = connection.createStatement();<br>
    statement.executeUpdate("CREATE TABLE actor (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,sname VARCHAR(50) NOT NULL, birthday DATE)"); <br>
    }<br>
    public static void main(String[] args){<br>
    Test t = new Test();<br>
    }<br>
    }<br>
    <br>
    <br>
    Ich glaube fast, dass der SQL Code falsch ist, müsste da aber nicht auch eine Fehlermeldung erscheinen, oder kann es sein das der MySQlAdmin bicht aktualisiert ist, obwohl ich ihn sogar neu gestaretet hab?<br>
    Vielleicht kann mir jemand einen kleinen Hinweis geben<br><br>
    Gruß Othma

    Comment


    • #3
      hi othmar,

      es scheint, dass "getConnection()" fehlschlaegt, somit erstmal eine
      ausnahme "wirft", damit die ausschrift "Cant acces MovieCatalog".
      nun ist "connection" aber immernoch undefiniert (null), somit
      scheitert das "connection.close()" (zeile 19) und bewirkt:
      "Exception in Thread "main" java.lang.NullPointerException at Test(init)(Test.java.19)".
      abhilfe schafft ein test: if( connection != null ) connection.close().
      andererseits ist ein ausstieg bei fehlender verbindung schon sinnvoll:
      System.exit(-1);

      gruss
      thomas

      http://www.cs.uni-magdeburg.de/~funke/index.htm

      Comment


      • #4
        Hi Thomas<br>

        Danke für diese Infos, in der Zwischenzeit habe ich diesen Code verbrochen, es gibt keine Exceptions mehr, aber in Mysql wird auch keine Table angelegt, ich habe auch schon den SQL Code überprüft, hier der Code,<br>
        <br>
        import java.sql.*;<br>
        <br>
        class Mysql{<br>
        static String driver = "org.gjt.mm.mysql.Driver";<br>
        static String url = "jdbc:mysql://localhost:3360/MovieCatalog";<br>
        Connection connection = null;<br>
        Statement statement = null;<br>

        public void initialize() throws SQLException, ClassNotFoundException <br>
        {<br>
        try{<br>
        Driver d = (Driver)Class.forName(driver).newInstance();<br>
        System.out.println("Version:"+d.getMajorVersion()+ ":"+d.getMinorVersion());<br>
        }catch(Exception e){System.out.println("Cant load Driver");}<br>
        try{<br>
        connection = DriverManager.getConnection(url);<br>
        }catch(Exception e){System.out.println("Keine Connection");}<br>
        finally{<br>
        try{ <br>
        connection.close();<br>
        }catch(Exception e){System.out.println("Could not close");}<br>
        }<br>
        }<br>
        public void createTable() throws SQLException<br>
        {<br>
        statement = connection.createStatement();<br>
        statement.executeUpdate("CREATE TABLE actor (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,sname VARCHAR(50) NOT NULL, birthday DATE);");
        }<br>
        public static void main(String[] args){<br>
        Mysql m = new Mysql();<br>
        }<br>
        }<br>
        <br>
        Das eigenartige ist das die ganzen Traces die ich in die Exceptions geschriebeb habe, wie auch jene in den try Blocks, nicht ausgegeben werden.ich habe die Verbindung auch schon ohn localhost und port versucht.<br>
        Gruß Othma

        Comment


        • #5
          Hallo Othmar!
          <br>
          Vergleiche meine Antwort zu Deiner Frage im JDBC-Ordner. <br>
          Herzliche Gruesse aus Hamburg, <br>
          Stefa

          Comment

          Working...
          X