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.