SQL-Befehle lassen sich nicht ausführen

aso7b71

Mitglied
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


Java:
/*
 * 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());
        }
    }

}
 
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ß
 
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
Code:
SELECT * FROM...
heißen sollte
 
Zuletzt bearbeitet:
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...
 
Natürlich ist es aufschlussreich: stmt ist null, denn du initialisierst es nur in der datensatzHolen-Methode, die du aber nie aufrufst.
 

Neue Themen


Zurück
Oben