Auf Thema antworten

Hallo ihr lieben,


Ich habe ein Problem...

es gibt Fehler, ich weiß nicht warum, könnte jemand mir helfen.


[code=Java]java.lang.NullPointerException

    at Parser.insertValue(Parser.java:136)

    at Parser.endElement(Parser.java:248)

    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)

    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)

    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)

    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)

    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)

    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)

    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)

    at javax.xml.parsers.SAXParser.parse(Unknown Source)

    at javax.xml.parsers.SAXParser.parse(Unknown Source)

    at gui.makeDB(gui.java:87)

    at Main.main(Main.java:7)[/code]


und mein verkruze code


[code=Java]import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;

import org.xml.sax.*;

import org.xml.sax.helpers.*;


import java.sql.*;

import java.io.*;


import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;


public class gui extends DefaultHandler {


    Connection connection;// Die Datenbankverbindung

    Statement statement; // Ein SQL-Statement-Objekt

    PreparedStatement prestatement;

    String driver = "org.postgresql.Driver";

    // --------------------------------------------------------------------------


    String host = "localhost"; // !!! anpassen !!!


    String port = "5432"; // !!! anpassen !!!


    String database = "xml"; // !!! anpassen !!!


    String user = "postgres"; // !!! anpassen !!!


    String password = "eleno308"; // !!! anpassen !!!


    // --------------------------------------------------------------------------

    // jdbc:postgresql:database

    // jdbc:postgresql://host/database

    // jdbc:postgresql://host:port/database


    public String getUrl() {

        return ("jdbc:postgresql:"

                + (host != null ? ("//" + host)

                        + (port != null ? ":" + port : "") + "/" : "") + database);

    }


    public void loadJdbcDriver() {

        try {

            Class.forName(driver);

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

            System.exit(1);

        }

        System.out.println("driver loaded");

    }


    public void openConnection() {

        try {

            connection = DriverManager.getConnection(getUrl(), user, password);

        } catch (SQLException e) {

            e.printStackTrace();

            System.exit(1);

        }

        System.out.println("connection opened");

    }


    public void closeConnection() {

        try {

            connection.close();

        } catch (SQLException e) {

            e.printStackTrace();

            System.exit(1);

        }

        System.out.println("\nconnection closed");

    }


    public void makeDB() throws Exception {

        loadJdbcDriver();

        openConnection();

        creatTable();


        closeConnection();

    }


    /* Implementierung JDBC */

    public void creatTable() {

        try {

            statement = connection.createStatement();

            statement.execute("DROP TABLE IF EXISTS page");

            statement.execute("CREATE TABLE page " + "(title VARCHAR(255), "

                    + " id VARCHAR(255), " + " PRIMARY KEY ( id ))");

            statement.close();

        } catch (SQLException e) {

            e.printStackTrace();

            System.exit(1);

        }

        System.out.println("\nCreating table");

    }


    public void insertValue(String title, String id) {

        String abfr;

        try {

            prestatement = connection

                    .prepareStatement("INSERT INTO page " + "VALUES (?,?)");

            prestatement.setString(1, title);

            prestatement.setString(2, id);

            prestatement.executeUpdate();

           

            statement.close();

        } catch (SQLException e) {

            e.printStackTrace();

            System.exit(1);

        }

        System.out.println("\nInsert Value");

    }

}


[/code]


ich habe die Stelle gefunden warum Fehlermeldung gibt. und zwar

[JAVA=42]prestatement = connection

                    .prepareStatement("INSERT INTO page " + "VALUES (?,?)");[/code]

ich habe

[code=Java]System.out.println("connection:" + connection);[/code]

und die gibt connection: null aus.

Ich habe nicht verstanden warum, weil die Stelle

[code=Java]public void openConnection() {

        try {

            connection = DriverManager.getConnection(getUrl(), user, password);

        } catch (SQLException e) {

            e.printStackTrace();

            System.exit(1);

        }

        System.out.println("connection opened");

    }

("connection:" + connection);[/code]

muss connection schon installiert werden. Und ganz oben habe ich connection Global definiert.



Oben