# SQL-Befehle lassen sich nicht ausführen



## aso7b71 (26. Jan 2011)

Hi,

ich versuche via JAVA auf eine Datenbank zuzugreifen und der Verbindungsaufbau klappt auch soweit. Es ist möglich Metadaten der Datenbank anzufragen und auszugeben. Wenn ich jetz aber versuche auch nur einfache SQL-Befehle auszuführen läuft das Programm immer in einen Fehler. Kann mir jemand weiterhelfen und mir sagen was da die Ursache ist?

Gruß Robin



```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sqltest;
import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.*;
/**
 *
 * @author robin
 */
public class Main
{

    /**
     * @param args the command line arguments
     */
    static private final int PORT = 5555;
     static private final String DATABASEPORT = "1433";
    static private final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//
    static private final String URL =    "jdbc:sqlserver://192.168.150.32:1433;databaseName=PV_Monitoring;selectMethod=cursor";
    static private final String SERVERNAME= "192.168.150.32";
    static private final String DATABASENAME = "PV_Monitoring";
    static private final String USERNAME =  "mentrup";
    static private final String PASSWORT = "*********?";
    static private final String SELECTMETHOD = "cursor";

    static private java.sql.Connection  con = null;
    static Statement stmt;
    static DatabaseMetaData meta;

    public static void main(String[] args)
    {
        initialisierungSQL();
       
        try
        {
            meta = con.getMetaData();
            System.out.println("Verbindung hergestellt zu Datenbank: "+meta.getDatabaseProductVersion());
            System.out.println("Verbindung hergestellt zu Datenbank: "+meta.getURL());
        }
        catch(Exception e)
        {
            System.err.println("ohoh");
        }
        datensatzSchreiben();
    }
    private static void initialisierungSQL()
    {
        //Erstellen der Verbindung zur Sql-Datenbank
        
        /*Alle Dezeit aktiven Treiber anzeigen
        for(Enumeration<Driver> e = DriverManager.getDrivers();e.hasMoreElements(); )
            System.out.println(e.nextElement().getClass().getName());*/
        try
        {
           //Informationsausgabe
            Class.forName(DRIVER);
            //DriverManager.setLogWriter(new PrintWriter(System.out));
            System.out.println("Microsoft Treiber geladen");
            try
            {
                con = DriverManager.getConnection(getConnectionUrl(), USERNAME, PASSWORT);
                if(con!=null) System.out.println("Verbdindung zu SQL-Server hergestellt");
            }
            catch(Exception e)
            {
                System.out.println(e+" \nTreiberfehler");
            }
        }
        catch(ClassNotFoundException e)
        {
            System.out.println("ERROR: Treiber konnte nicht geladen werden");
            e.printStackTrace();
            System.exit(1);
        }

    }
    private static String getConnectionUrl()
    {
       return URL+SERVERNAME+":"+DATABASEPORT+";databaseName="+DATABASENAME+";selectMethod="+SELECTMETHOD+";";
    }
    private static void datensatzHolen(String mac)
    {
        //Hier SQL Abfrage
        String query=("SELECT FROM Datensatz WHERE stringID LIKE 2");
        System.err.println("SQL-Abfrage ausgeführt");
        try
        {
            stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            
        }
        catch(Exception e)
        {
            System.err.println("SQL-Abfrage nicht ausführbar");
        }

        //if(mac==executeUpdate())
    }
    private static void datensatzSchreiben()
    {
        String query=("DROP TABLE Kunde");
        try
        {
            stmt.executeUpdate(query);
        }
        catch(Exception e)
        {
            System.err.println("SQL-Abfrage nicht ausführbar "+e.getMessage());
        }
    }

}
```


----------



## XHelp (26. Jan 2011)

aso7b71 hat gesagt.:


> Wenn ich jetz aber versuche auch nur einfache SQL-Befehle auszuführen läuft das Programm immer in einen Fehler.



Gibt es dazu auch eine Beschreibung, mit der man was anfangen kann? :bahnhof: Zeile 100 ist für sowas nutzlos. Lass dir die Fehlermeldung ausgeben


----------



## aso7b71 (26. Jan 2011)

Hab ich probiert, aber ich bekomm immer n NULL zurück. Hab das gerade noch mal in ner SQLException gefangen, aber hat auch keinen unterschied gemacht. Den Fehler bekomm ich doch über getMessage(), oder? Hab aber auch SQLStatement ausprobiert und bleibt ein NULL. Was musst du noch wissen?

Gruß


----------



## XHelp (26. Jan 2011)

Wo bekommst du null zurück? Mach einfach mal e.printStackTrace() im catch

Außerdem könnte es einfach mal ein Fehler im SQL sein, da es vermutlich 
	
	
	
	





```
SELECT * FROM...
```
 heißen sollte


----------



## aso7b71 (26. Jan 2011)

java.lang.NullPointerException
at sqltest.Main.datensatzSchreiben(Main.java:110)
at sqltest.Main.main(Main.java:50)

Das bekomme ich von dem catch in der Methode datensatzSchreiben, die in main() aufgerufen wird. Ist aber glaub ich auch nich sehr aufschlussreich...


----------



## XHelp (26. Jan 2011)

Natürlich ist es aufschlussreich: stmt ist null, denn du initialisierst es nur in der datensatzHolen-Methode, die du aber nie aufrufst.


----------



## aso7b71 (26. Jan 2011)

Aua...das doof...fehler gefunden.


----------

