Hallo Leute,
ich wollte mir eine Datenbankklasse bauen.
Mein Konzept ist wie folgt.
Ich habe ein Klasse Connect die die ganze Verbindungen aufbaut.
Dann habe ich eien Klasse Datenabnk die für Abfragen etc zuständig ist.
Dann habe ich eine Kasse Module, wo ich alle Abgragen für mein Gästebuch brauche.
Und dann noch eine Mai, wo ich das Programm mit starte.
Wenn ich es starte erscheint folgende Meldung.
Exception in thread "main" java.lang.NullPointerException
at Gaestebuch.Datenbank.hole_query(Datenbank.java:32)
at Gaestebuch.LeseModule.get_Beitraege(LeseModule.java:17)
at Gaestebuch.Haupt.main(Haupt.java:13)
Hier mein Quellcode:
Was ist falsch??
Gruß
alaska[/quote]
ich wollte mir eine Datenbankklasse bauen.
Mein Konzept ist wie folgt.
Ich habe ein Klasse Connect die die ganze Verbindungen aufbaut.
Dann habe ich eien Klasse Datenabnk die für Abfragen etc zuständig ist.
Dann habe ich eine Kasse Module, wo ich alle Abgragen für mein Gästebuch brauche.
Und dann noch eine Mai, wo ich das Programm mit starte.
Wenn ich es starte erscheint folgende Meldung.
Exception in thread "main" java.lang.NullPointerException
at Gaestebuch.Datenbank.hole_query(Datenbank.java:32)
at Gaestebuch.LeseModule.get_Beitraege(LeseModule.java:17)
at Gaestebuch.Haupt.main(Haupt.java:13)
Hier mein Quellcode:
Code:
package Gaestebuch;
public class Connect {
private String treiber;
private String verbindung;
private String host;
private String user;
private String password;
private String datenbankname;
// Diese Methode setzt die Treiber
public void setze_treiber(String wert) {
if (wert == "sql") {
this.treiber = "com.mysql.jdbc.Driver";
}
}
// Diese Methode sendet die Treiberdaten
public String nehme_treiber() {
return (this.treiber);
}
public void setze_verbindung(String wert) {
if (wert == "sql") {
this.verbindung = "jdbc:mysql://" + this.host+ "/" + this.datenbankname;
}
}
public String nehme_verbindung() {
return this.verbindung;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getDatenbankname() {
return datenbankname;
}
public void setDatenbankname(String datenbankname) {
this.datenbankname = datenbankname;
}
}
Code:
package Gaestebuch;
import java.sql.*;
import java.util.HashMap;
import java.util.Vector;
public class Datenbank extends Connect {
private Connection con;
private Statement state;
private ResultSet result;
//Diese Methode baut eine Verbindung zur Datenbank auf
protected void verbindung(){
try {
Class.forName(this.nehme_treiber());
} catch (ClassNotFoundException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
try {
con=DriverManager.getConnection(this.nehme_verbindung(),this.getUser(),this.getPassword());
} catch (SQLException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
}
//Diese Methode wird für Select Statements verwendet
protected void hole_query(String abfrage){
try {
this.result=state.executeQuery(abfrage);
} catch (SQLException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
}
//Diese Methode wird für Insert und Update Statements verwendet
protected void schreibe_query(String abfrage){
try {
state.executeUpdate(abfrage);
} catch (SQLException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
}
//Diese Methode schließt die Verbindung zur Datenbank
protected void schliesseVerbindung(){
try {
state.close();
} catch (SQLException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
}
//Diese Methode wird verwendet, wenn 1 oder mehr Datensätze aus der Tabelle geholt wird
protected Vector fetchAsVector() {
Vector results = new Vector();
try {
ResultSetMetaData metaData = result.getMetaData();
int anzSpalten = metaData.getColumnCount();
while (result.next()) {
HashMap row = new HashMap();
for (int i = 1; i != anzSpalten + 1; i++) {
Object obj = result.getObject(i);
String name = metaData.getColumnName(i);
name = name.toUpperCase();
row.put(name, obj);
}
results.add(row);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return results;
}
//Diese Methode wird verwendet, wenn ein Datenasatz aus der Tabelle geholt wird
protected HashMap fetchasHash(){
HashMap resultat=new HashMap();
ResultSetMetaData metaData;
try {
metaData = result.getMetaData();
int anzSpalten = metaData.getColumnCount();
result.first();
for (int i = 1; i != anzSpalten + 1; i++) {
Object obj = result.getObject(i);
String name = metaData.getColumnName(i);
name = name.toUpperCase();
resultat.put(name, obj);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resultat;
}
}
Code:
package Gaestebuch;
import java.util.Vector;
public class LeseModule extends Datenbank{
public void verbindungsaufbau(){
this.setHost("localhost");
this.setUser("root");
this.setPassword("12345");
this.setDatenbankname("java");
this.setze_verbindung("sql");
this.setze_treiber("sql");
}
public void get_Beitraege(){
String abfrage="Select * from test";
this.hole_query(abfrage);
Vector vec=this.fetchAsVector();
for(int i=0;i<vec.size();i++){
System.out.println(vec.elementAt(1)+"\t");
}
}
}
Code:
package Gaestebuch;
public class Haupt {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Automatisch erstellter Methoden-Stub
LeseModule lesen=new LeseModule();
lesen.verbindungsaufbau();
lesen.get_Beitraege();
}
}
Gruß
alaska[/quote]