Prepared Statement

Status
Nicht offen für weitere Antworten.

noob

Mitglied
Ich hab eine MySQL - Datenbank und greife per Java darauf zu. Der Aufbau der Verbindung, das Absetzen von Abfragen läuft ohne Probleme. Jetzt möchte ich per Menü ein 2. Fenster ( JFrame ) öffnen um dort spezielle einzelne MySQL - Befehle besonders abzuarbeiten d.h. ich baue ein Fenster auf, in das ich alle Eingaben mache die für den Grant-Befehl nötig sind. Nach drücken des Buttons "Benutzer anlegen" soll der Grant - Befehl ( wenn möglich als Prepared Statement ) ausgeführt werden. Das alles funktioniert bis auf die Abarbeitung des Befehls, da kommt immer eine NullPointer - Fehlermeldung.

p.s.: Die Verbindung wird in der Klasse Verbindung aufgebaut / conn ist static, da ich ohne in nem anderen Programm-Teil nicht darauf zugreifen konnte.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;
import java.io.*;
import java.util.Enumeration;

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen" 
public class Grant{
	
			public Grant(){
		
		Connection conn = null;
		
		PreparedStatement stmt = null;
		ResultSet res = null;
		
		User1.Texte("Aktuell geladene MySQL - Treiber ...");
		for ( Enumeration enum = DriverManager.getDrivers(); enum.hasMoreElements();){
			User1.Texte(enum.nextElement().getClass().getName());
					}
			User1.Texte("Verarbeitung beginnt");
			String sql = "grant all on shanor.* to test@localhost identified by 'test'";
			try{
				stmt = conn.prepareStatement(sql);
				}
				catch(SQLException e){
					User1.Texte("Fehler beim Ausführen der Abfrage: "+e);
				};
				
				try{
					stmt.executeUpdate(sql);
					User1.Texte("\r\nAnzahl Datensätze: "+stmt.getUpdateCount());
				}
				catch(SQLException e){
					User1.Texte("Fehler beim Ausführen " + e);
				}
				try{
					stmt.cancel();
					stmt.close();
				}
				catch(SQLException e){
					User1.Texte("Fehler beim Ausführen " +e);
				}
				try{
					stmt.cancel();
					stmt.close();
				}
				catch(SQLException e){
					User1.Texte("Fehler beim Ausführen " +e);
				}
				}
				}

Vielen Dank für Eure Hilfe...
 

foobar

Top Contributor
In welcher Zeile fliegt die Exception?

Lass dir mal den Stacktrace ausgeben, dann siehtst du auch wo der Fehler auftritt.
 

noob

Mitglied
Der NullPointer ist bei Zeile 27 stmt = conn.prepareStatement(sql);
Das Programm läuft mindestens bis Zeile 24, da die dortige Meldung korrekt ausgegeben wird....
 

foobar

Top Contributor
Du hast keine Connection erzeugt:
Code:
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb");
 

noob

Mitglied
Die Connection hab ich in der Klasse Verbindung erzeugt. Der Verbindungsaufbau funktioniert auch. Das Absetzen von Abfragen ( vom Hauptframe wo auch das Menü integriert ist ) funktioniert einwandfrei. Das obige Problem taucht nur auf, wenn ich vom Hauptframe aus einen neuen JFrame öffne ( wie mein Bsp. oben )...
 

abollm

Top Contributor
noob hat gesagt.:
Ich hab eine MySQL - Datenbank und greife per Java darauf zu. Der Aufbau der Verbindung, das Absetzen von Abfragen läuft ohne Probleme. Jetzt möchte ich per Menü ein 2. Fenster ( JFrame ) öffnen um dort spezielle einzelne MySQL - Befehle besonders abzuarbeiten d.h. ich baue ein Fenster auf, in das ich alle Eingaben mache die für den Grant-Befehl nötig sind. Nach drücken des Buttons "Benutzer anlegen" soll der Grant - Befehl ( wenn möglich als Prepared Statement ) ausgeführt werden. Das alles funktioniert bis auf die Abarbeitung des Befehls, da kommt immer eine NullPointer - Fehlermeldung.
[..]
Na, ist ja gut, dass du dich jetzt registriert hast. Kannst du zu deinem vorhandenen Klassenaufbau einmal wesentliche Details geben? Dann glaube ich ist es für alle hier leichter zu beurteilen, wie man dir helfen kann.

Ich z.B. habe nicht genau verstanden, warum du nun unbedingt ein zweites JFrame per Menü für das Ausführen von SQL-Befehlen öffnen möchtest. Also insbesondere dann, wenn, wie du selbst schreibst, das Absetzen von Abfragen ohne Probleme läuft. Heißt das etwa, dass du die Abfrageergebnisse bisher auf der Konsole ausgiebst?
 

noob

Mitglied
Also das Programm ist folgendermaßen aufgebaut:
1. In der Main ist das Menü drin sowie der Aufruf für die Klasse mit der GUI
2. In der GUI - Klasse ( besteht aus JFrame u. JLabel u. JTextfield ) werden die Logindaten eingegeben und per Button wird die Klasse für die Connection geladen und es baut sich ne Verbindung auf. Desweiteren sind in dem GUI - Frame Felder für Ein- und Ausgabe ( jeweils eins :) ) wo man eine Abfrage an die DB schicken kann und ne Ausgabe im Ausgabe-JTextArea anzeigen lassen kann
3. Connection - Klasse ( wie bereits oben erwähnt ) zum Aufbau der Verbindung
4. Abfrage - Klasse bekommt von der GUI die Abfrage ( getText()) und führt sie mit stmt.execute() aus. Die Ausgabe landet dann in der GUI - Klasse im Ausgabe - JTextArea.
Soweit läuft das alles auch

Jetzt möchte ich aber für meine DB ein paar spezielle Punkte so einrichten, das man nicht nen SQL-Befehl eigeben muß, sondern nur noch die fehlenden Parameter ( beim grant z.B.: den host, das pw, den namen, usw ). Leider macht mir das Programm hierbei eben jene oben genannten Probleme.
Diese Menüpunkte werde vom Main aus ( wo das Menü definiert ist ) aufgerufen. Es soll ein neues Fenster entstehen ( neuer JFrame ) mit Ein- u. Ausgabebereichten ( JTextfield, Jlabel usw. ). Soweit geht es ja auch noch.

Dann sollen die Eingaben jedoch in den vorbereiteten Befehl eingefügt werden ( stmt.setString... ) und der Befehl ausgeführt werden. Da das nicht funktioniert hat hab ich es mal ohne die Parameter versucht d.h. den Befehl ganz eingegeben ( z.b.: grant all on .... ). Nur leider kommt hierbei das oben genannte Problem....

Ich hoffe ihr könnt hiermit was anfangen...
 

Bleiglanz

Gesperrter Benutzer
so wie dein Programm oben geschrieben ist, ist im Konstruktor von Grant() einfach conn = null (eine lokale Variable!!), du host dir nirgens eine Connection (z.B. vom DriverManager, oder per übergabe im Konsturktor)???

VERGISS ENDLICH DAS MIT DEM static conn

=> Übergibs einfach mit public Grant(Connection conn) im Konstruktor
 

noob

Mitglied
Ich hab jetzt das static rausgenommen ( public Connection conn; )
Der Verbindungsaufbau funktioniert noch einwandfrei, doch kann ich nun auch vom Hauptframe aus ( GUI-Frame, der über den ich meine Login - Daten eingebe, eine Abfrage starten kann und mit einem JTextArea für die Ausgabe der Abfrage )keine Abfrage mehr starten.
Bisher hab ich natürlich via stmt = Connect.conn.... ( Connect die Klasse wo die Verbindung aufgebaut wird ) darauf zugegriffen und das geht ja nun nicht mehr ( wg. static ). Also hab ich Connect weggenommen. Nun kommt ein java.lang.NosuchMethodError, wohl weil beim Aufruf von Abfrage ( der Klasse wo die Abfrage Verarbeitet und eine Ausgabe erzeugt wird ) Abfrage A = new Abfrage ( ab.getText()) ja die Connection fehlt.

Das Problem ist jetzt, wenn ich folgendes Versuche geht es auch nicht ( s.u. ). Wie mach ich es richtig?

Abfrage - Aufruf:
Abfrage A = new Abfrage(Connection conn, ab.getText())

Abfrage - Klasse:
....
public Abfrage(Connection conn, String ab){
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
C PostgreSQL Prepared Statement Datenbankprogrammierung 7
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
L MySQL Prepared Statement batch langsamer als bulk insert? Datenbankprogrammierung 10
F Frage zu Prepared Statement Datenbankprogrammierung 2
D Problem: Prepared Statement (Insert) funktioniert nicht. Datenbankprogrammierung 3
G Mit Prepared Statement in MDB schreiben Datenbankprogrammierung 7
W Prepared Statement und Verbindungsverlust Datenbankprogrammierung 4
W Prepared Statement mehrere Zeichenketten Datenbankprogrammierung 4
G Keine Aussicht mit Prepared Statement Datenbankprogrammierung 10
P Prepared Statement scheint nicht zu funktionieren Datenbankprogrammierung 14
T Prepared Statements und Sets Datenbankprogrammierung 5
L Wiederverwendung von Prepared Statements Datenbankprogrammierung 4
Landei Mehre Werte für einen Prepared-Statement_Parameter übergeben? Datenbankprogrammierung 3
N prepared Statements Datenbankprogrammierung 6
G Flexible Prepared Statements Datenbankprogrammierung 2
F Update mit Prepared Statements Datenbankprogrammierung 10
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
Kotelettklopfer SQLite Verhindern von doppelter Statement Ausführung Datenbankprogrammierung 25
L SQL-Statement SQL Statement doppelte Einträge finden Datenbankprogrammierung 9
C MySQL SQL Statement wir nicht ausgeführt Datenbankprogrammierung 11
G Datenbank Statement Datenbankprogrammierung 22
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
B MySQL Umkreissuche - brauche Hilfe bei SQL Statement Datenbankprogrammierung 12
M CSV Import - Dynamisches SQL Statement Datenbankprogrammierung 15
D Wiederverwendung / Recycling / Queuing von Statement Objekten Datenbankprogrammierung 1
D SQL Statement gesucht... Datenbankprogrammierung 15
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
F Dynamischen String in SQL Statement einbinden Datenbankprogrammierung 9
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
A Problem mit Create-Statement Datenbankprogrammierung 9
LadyMilka MySQL Syntaxfehler im Statement Datenbankprogrammierung 3
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
P sql statement alter table foreign key Datenbankprogrammierung 4
T sql Statement Datenbankprogrammierung 9
B JDBC MySQL Statement Datenbankprogrammierung 3
A Sql Statement - Alle Zahlen größer 9 Datenbankprogrammierung 3
F Sql Statement Datenbankprogrammierung 12
A SQL-Statement prüfen Datenbankprogrammierung 3
W Statement als Klassenvariable Datenbankprogrammierung 27
I Select-Statement optimieren Datenbankprogrammierung 14
D SQLite Statement nimmt keine Namen aus getter-Methoden Datenbankprogrammierung 11
alex_fairytail MySQL SQL Statement Delete zwischen Datum1 und Datum2 Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
R Derby/JavaDB LIKE Statement mit Wildcard Datenbankprogrammierung 20
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S Null Pointer exception statement Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
K statement.execute liefert false Datenbankprogrammierung 6
S SQL Statement: executeUpdate Datenbankprogrammierung 15
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
T MySQL PreparedStatement mit INSERTs langsam, Batch-Statement auch Datenbankprogrammierung 4
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
L MySQL Kann Statement nicht erzeugen Datenbankprogrammierung 5
T Komme mit dem SQL Statement nicht weiter Datenbankprogrammierung 5
D MySQL Client - Server: Client verabschiedet sich sobald ich Variablen im SQL Statement verwende Datenbankprogrammierung 9
T java.sql.SQLException: unexpected end of statement Datenbankprogrammierung 2
J SQL-Statement Datenbankprogrammierung 10
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
G Frage zum Insert-Statement Datenbankprogrammierung 2
J JDBC- Statement Ausführung nicht persistent Datenbankprogrammierung 2
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
Z DELETE-Statement Datenbankprogrammierung 6
G INSERT-STATEMENT Datenbankprogrammierung 6
alexpetri hsql statement problem Datenbankprogrammierung 3
W invalid sql statement ? Datenbankprogrammierung 3
S Probleme mit statement.close() Datenbankprogrammierung 10
G Wie ein SQL-Statement zusammensetzen? Datenbankprogrammierung 5
T Select Statement auf Relation Datenbankprogrammierung 3
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
G MsSQL | Statement.execute(String s) Datenbankprogrammierung 3
G Für jede SQL-Abfrage eigenes Statement und ResultSet? Datenbankprogrammierung 3
C Statement/Connection SQLWarning Datenbankprogrammierung 4
J sql-statement Datenbankprogrammierung 7
G Update Statement automatisch unterteilen lassen Datenbankprogrammierung 3
T SQL-Statement parser? Datenbankprogrammierung 11
G Problem mit Suchen Statement Java und MS-SQL-Server Datenbankprogrammierung 9
J SELECT-Statement Datenbankprogrammierung 4
S Statement.getGeneratedKeys() funktioniert nicht Datenbankprogrammierung 4
G Problem mit Delete-Statement Datenbankprogrammierung 3
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
E Problem mit create-Statement Datenbankprogrammierung 5
E SQL-Statement um eine Nummer in der Datenbank zu suchen Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben