Syntax für Select - Abfrage mit Variablen

Status
Nicht offen für weitere Antworten.

ghost

Bekanntes Mitglied
Ich will ne Select-Abfrage mit Variablen Programmieren, leider mag Java meinen Versuch nicht. Wie muß ichs umändern?
Code:
try{
				if ( stmt.execute("select sel"+" from tab;")){
					res = stmt.getResultSet();
					show_result(res);
					res.close();
 

bronks

Top Contributor
Das in Deinem Code kann alles mögliche bedeuten. Was willst Du konkret machen bzw. erreichen?

Sonst kann ich Dir noch diesen Suchbegriff empfehlen: "prepared statement" evtl. ist das die Lösung.
 

AlArenal

Top Contributor
Wo soll denn da die Variable sein? Das Semikolon brauchste auch nicht. Das wird nur benötigt, wenn man von Hand im DB-Client rummacht..
 

ghost

Bekanntes Mitglied
Die Variablen sind:
sel --> was wird gesucht
tab --> in welcher Tabelle wird gesucht

Die Variablen werden in Textfeldern eingegeben und dann per getText ausgelesen. Ich weiß blos nicht, wie ich das mit dem String beim Statement machen muß?
 
G

Gast

Gast
Ist es eigentlich besser den String vorher zu erzeugen und ihn dann komplett dem Statement zu übergeben?

Was muß man bei der String-Schreibweise im Statement beachten?
 

Bleiglanz

Gesperrter Benutzer
Gast hat gesagt.:
Ist es eigentlich besser den String vorher zu erzeugen und ihn dann komplett dem Statement zu übergeben?

Was muß man bei der String-Schreibweise im Statement beachten?
a) du sollst ein Prepared Statement verwenden, wenn es "variable" Parameter gibt
b) beachten? SELECT spalte1, spalte2 FROM table ist schon ok
c) du musst natürlich die richtige execute Methode nehmen, die dir ein ResultSet zurückgibt
 
G

Gast

Gast
Gehört zwar nicht ganz zum Thema, aber was muß ich machen wenn in dem SQL - Befehl "Sonderzeichen" wie z.B.: "" vorkommen?
 
G

Gast

Gast
Kann mir bitte wer sagen, wie ich das preparedStatement hier richtig verwende ( besonders den Teil mit den Sonderzeichen beim passwort)?

stmt = Verbindung.conn.prepareStatement("grant ? on ? to ?@? identified by "´?´"");

Thanks
 

Bleiglanz

Gesperrter Benutzer
oops,

für solche Statements kannst du kein PS verwenden (möglicherweise)

du müsstest

ps.setString(1,"ALL");
ps.setString(2,"kunden.*");
ps.setString(3,"joe");
ps.setString(4,"hismachine");
ps.setString(5,"geheim")
...

usw. machen, aber weil Strings dabei automatisch gequotet werden, kommt sowas wie

grant 'ALL' ON 'kunden.*' to 'joe'@'hismachine' ..

heraus (also mit einfachen Hochkommas...)

ob die datenbank das schluckt?
 
G

Gast

Gast
Das heißt also, ich soll das ganze am besten mit einem einfachen sprich normalen statement machen. OK. Aber wie krieg ich dann da das mit den Hochkommas beim Passwort hin?
 
G

Gast

Gast
Und wie muß ich das mit den Hochkommas beim Passwort machen bzw. wie gib ich die richtig an?
 

nollario

Bekanntes Mitglied
mysql nimmt man besser einfach hochkommata, also: ' statt "
schickt meistens....

prepared statements und setString sind natürlich die geeignetesten methoden...
 
G

Gast

Gast
Ich hab das ganze jetzt mal so probiert ( s.u. ) leider krieg ich beim Ausführen immer einen Nullpointer in Zeile 34?! Als ich das ganze mit festen Strings ( stmt.setString(2, "localhost"); ) versucht hab kam keine Meldung wieso krieg ich jetzt nen Fehler?

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

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen" 
public class Grant{
	
			public Grant(String user, String pwd, String db,String host, String li){
						
			//Statement stmt=null;			
			PreparedStatement stmt = null;
			ResultSet res = null;
			
			User.Texte("Verarbeitung beginnt");
					
			try{
				stmt = Verbindung.conn.prepareStatement("grant ? on ? to ?@? identified by ?");
				stmt.setString(1, li);
				stmt.setString(2,db);
				stmt.setString(3,user);
				stmt.setString(4,host);
				stmt.setString(5,pwd);
				
				
			}
			catch(SQLException e){
				User.Texte("Fehler beim Ausführen der Abfrage"+e);
			};
			
			try{
				if ( stmt.executeUpdate()){  <-- Zeile 34???
					res = stmt.getResultSet();
					show_result(res);
					res.close();
				}
				else{
					User.Texte("Abfrage ausgeführt");
					User.Texte("\r\nAnzahl Datensätze: "+ stmt.getUpdateCount());
				}
}
				catch (SQLException e){
			  		User.Texte("Fehler beim Ausführen der Abfrage: "+ e);
				}
				try{
					stmt.cancel();
					stmt.close();
				}
				catch (SQLException e){
					User.Texte("Fehler beim Ausführen der Abfrage" +e);
				}
				try{
					stmt.cancel();
					stmt.close();
					}
					catch(SQLException e){
						User.Texte("Fehler beim Ausführen der Abfrage2"+e);
				}
			}
 

Bleiglanz

Gesperrter Benutzer
Code:
}
catch(SQLException e){
User.Texte("Fehler beim Ausführen der Abfrage"+e);
};

try{
if ( stmt.executeUpdate()){ <-- Zeile 34???
die einzige Möglichkeit für eine NPE in 34 ist, dass oben die Ex geflogen ist (d.h. dass stmp = .... schon gescheitert ist)

anders geht das nicht

bist du sicher dass in User.Text nix drin steht...?
 
G

Gast

Gast
Ich habs grad nochmal versuch. Aber es wurde nichts im Textfenster angezeigt und im Dos-Fenster kam wieder nur der Nullpointer...
 

Bleiglanz

Gesperrter Benutzer
bist du dir bei der Zeile sicher

Code:
 res = stmt.getResultSet();
show_result(res);
res.close();
is totaler unsinn, der Befehl gibt kein ResultSet zurück
 
G

Gast

Gast
Ich hab jetzt an dem Statement "herumprobiert" doch es liefert mir immer nur den Nullpointer. Im Ausgabefenster wird nichts angezeigt. Ich bin schön langsam am rotieren :cry: ... Könnte mir jemand vielleicht zeigen wie dieses ver.... Teil richtig geht? DANKE

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

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen" 
public class Grant{
	
			public Grant(String user, String pwd, String db,String host, String li){
						
			//Statement stmt=null;			
			PreparedStatement stmt = null;
			ResultSet res = null;
			
			User.Texte("Verarbeitung beginnt");
					
			try{
				stmt = Verbindung.conn.prepareStatement("grant all on shanor to test@localhost identified by 'test'");
			/*	stmt.setString(1,li);
				stmt.setString(2,db);
				stmt.setString(3,user);
				stmt.setString(4,host);
				stmt.setString(5,pwd);*/
				
				
			}
			catch(SQLException e){
				User.Texte("Fehler beim Ausführen der Abfrage"+e);
			};
			
			try{
				res = stmt.executeUpdate();
				stmt.setString(1,li);
				stmt.setString(2,db);
				stmt.setString(3,user);
				stmt.setString(4,host);
				stmt.setString(5,pwd);
				User.Texte("\r\nAnzahl Datensätze: "+stmt.getUpdateCount());
				}
				catch (SQLException e){
					User.Texte("Fehler beim Ausführen" + e);
				}
				/*if ( stmt.execute()){
					res = stmt.getResultSet();
					show_result(res);
					res.close();
				}
				else{
					User.Texte("Abfrage ausgeführt");
					User.Texte("\r\nAnzahl Datensätze: "+ stmt.getUpdateCount());
				}
}
				catch (SQLException e){
			  		User.Texte("Fehler beim Ausführen der Abfrage: "+ e);
				}*/
				try{
					stmt.cancel();
					stmt.close();
				}
				catch (SQLException e){
					User.Texte("Fehler beim Ausführen der Abfrage" +e);
				}
				try{
					stmt.cancel();
					stmt.close();
					}
					catch(SQLException e){
						User.Texte("Fehler beim Ausführen der Abfrage2"+e);
				}
			}
 

bronks

Top Contributor
Gast hat gesagt.:
grant all on shanor to test@localhost identified by 'test'
Was willst Du eigentlich damit erreichen? Das "grant" modified doch nur eine oder mehrere Tabellen. Entweder das "grant" wird erledigt oder es gibt eine Exception, wenn es nicht erledigt werden konnte. Ein "ResultSet" wirst Du da nicht bekommen.
 
G

Gast

Gast
Ich will das man per GUI ( JTextfield und getText ) die Daten eingeben kann ( Benutzer, pw, host, usw ) und das preparedstatement soll dann diese ganzen Daten nehmen und mir den Benutzer anlegen...
 

bronks

Top Contributor
Gast hat gesagt.:
Ich will das man per GUI ( JTextfield und getText ) die Daten eingeben kann ( Benutzer, pw, host, usw ) und das preparedstatement soll dann diese ganzen Daten nehmen und mir den Benutzer anlegen...
Das "stmt.execute()" führt Deinen SQL aus und der Benutzer ist angelegt. Das wars.

Bleiglanz hat ja schon oben erwähnt: "... is totaler unsinn, der Befehl gibt kein ResultSet zurück"
 
G

Gast

Gast
Ich habs ja auch schon mit execute wie mit executeupdate probiert doch ich krieg immer diesen blöden nullpointer und ich weiß nicht warum...
 

bronks

Top Contributor
Gast hat gesagt.:
Ich habs ja auch schon mit execute wie mit executeupdate probiert doch ich krieg immer diesen blöden nullpointer und ich weiß nicht warum...

Nimm diesen Code als Grundlage. Das steht alles drin damit es funktioniert. Den Luxus kannste dann schrittweise einbauen und wenn dann etwas nicht klappt, dann war es das letzte was Du daran verändert hast.
Code:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.net.*; 
import java.sql.*; 
import java.io.*; 

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen" 
public class Grant{ 
    
         public Grant(String user, String pwd, String db,String host, String li){ 


         try{ 
            stmt = Verbindung.conn.prepareStatement("grant all on shanor to test@localhost identified by 'test'"); 
	    stmt.execute();
	    stmt.close();
	    } 
            catch (SQLException e){("Das ist schief gelaufen: "+ e);}
	 }
}
 
G

Gast

Gast
Ich hab das ganze jetzt wie unten gemacht. Jetzt kommt die Fehlermeldung: This command is not supportet in the prepared statement protocol yet ( im Ausgabefenster als SQLException ).

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;
import java.io.*;

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen"
public class Grant{

public Grant(){
PreparedStatement stmt = null;
try{
stmt = Verbindung.conn.prepareStatement("grant all on shanor to test@localhost identified by 'test'");
stmt.execute();
stmt.close();
}
catch(SQLException e){
User1.Texte("Das ist schiefgelaufen " +e);
}
}
}
 
G

Gast

Gast
C:\Progs\Grant.java:14: cannot resolve symbol
symbol : method createStatement (java.lang.String)
location: interface java.sql.Connection
stmt = Verbindung.conn.createStatement("grant all on shanor to test@localhost identified by 'test'");
^
C:\Progs\Grant.java:15: cannot resolve symbol
symbol : method execute ()
location: interface java.sql.Statement
stmt.execute();
^
2 errors
bei:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;
import java.io.*;

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen"
public class Grant{

public Grant(){
Statement stmt = null;
try{
stmt = Verbindung.conn.createStatement("grant all on shanor to test@localhost identified by 'test'");
stmt.execute();
stmt.close();
}
catch(SQLException e){
User1.Texte("Das ist schiefgelaufen " +e);
}
}
}

und bei unten stehendem kommt die selbe Meldung wie bei dem zuerst geposteten:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;
import java.io.*;

//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen"
public class Grant{

public Grant(){
PreparedStatement stmt = null;
try{
stmt = Verbindung.conn.prepareStatement("grant all on shanor to test@localhost identified by 'test'");
stmt.executeUpdate();
stmt.close();
}
catch(SQLException e){
User1.Texte("Das ist schiefgelaufen " +e);
}
}
}
 

bambi

Bekanntes Mitglied
Ich schreibe immer:

Code:
conn = xxx.getConnection();
stmt = conn.createStatement();
stmt.execute("grant all on shanor to test@localhost identified by 'test'");

Weiss, aber nicht, ob's denn daran liegt. Veilleicht klappt's ja auch anders...

ciao
 
G

Gast

Gast
Das hab ich ja probiert ( siehe obiges post / 2. Versuch ). Da krieg ich aber ne Fehlermeldung beim kompilieren...
 

abollm

Top Contributor
Ich habe mir den Code von deinem zweiten Posting (gestern um ca. 12:30 Uhr) einmal kurz angesehen. Dabei sind mir mindestens zwei Fehler aufgefallen. Ich habe dir einmal den von mir in _einigen_ Teilen veränderten Code gepostet, der beim Kompilieren nun wenigstens keinen Fehler mehr liefert.
Vielleicht hilft dir das ja weiter:
Code:
import java.sql.*;
import java.util.Enumeration;


//Klasse für die Verarbeitung und Ausgabe von "Benutzer anlegen"
public class Grant{
   
         public Grant(String user, String pwd, String db,String host, String li){
         
         Connection conn = null;         
         
         //Statement stmt=null;         
         PreparedStatement stmt = null;
         ResultSet res = null;

         System.out.println("Aktuell geladene MySQL-Treiber ...");
		 for (Enumeration enum = DriverManager.getDrivers(); enum
				.hasMoreElements();) {
			System.out.println(enum.nextElement().getClass().getName());
		 }
         
         System.out.println("Verarbeitung beginnt");
         String sql = "grant all on shanor to test@localhost identified by 'test'";
         try{
            stmt = conn.prepareStatement(sql);
         /*   stmt.setString(1,li);
            stmt.setString(2,db);
            stmt.setString(3,user);
            stmt.setString(4,host);
            stmt.setString(5,pwd);*/
            
            
         }
         catch(SQLException e){
            System.out.println("Fehler beim Ausführen der Abfrage"+e);
         };
         
         try{
            stmt.executeUpdate(sql);
            stmt.setString(1,li);
            stmt.setString(2,db);
            stmt.setString(3,user);
            stmt.setString(4,host);
            stmt.setString(5,pwd);
            System.out.println("\r\nAnzahl Datensätze: "+stmt.getUpdateCount());
            }
            catch (SQLException e){
               System.out.println("Fehler beim Ausführen" + e);
            }
            /*if ( stmt.execute()){
               res = stmt.getResultSet();
               show_result(res);
               res.close();
            }
            else{
               System.out.println("Abfrage ausgeführt");
               System.out.println("\r\nAnzahl Datensätze: "+ stmt.getUpdateCount());
            }
}
            catch (SQLException e){
                 System.out.println("Fehler beim Ausführen der Abfrage: "+ e);
            }*/
            try{
               stmt.cancel();
               stmt.close();
            }
            catch (SQLException e){
               System.out.println("Fehler beim Ausführen der Abfrage" +e);
            }
            try{
               stmt.cancel();
               stmt.close();
               }
               catch(SQLException e){
                  System.out.println("Fehler beim Ausführen der Abfrage2"+e);
            }
         }
 }
 
G

Gast

Gast
Ich hab das jetzt eingegeben, aber leider kommt immer noch der Nullpointer in der Zeile --> stmt = conn.prepareStatement(SQL);
Ich poste jetzt hier mal den Aufruf mit, vielleicht hab ich ja auch da einen Fehler drinn. Ich weiß nicht mehr weiter, warum ich immer diese nullpointer krieg????

Eingabemaske = User1.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;

//Klasse für den Menupunkt "Benutzer anlegen"
public class User1 extends JFrame implements ActionListener {
JButton bu10,bu20;
private static JTextArea ausg = new JTextArea(3,30);
private JTextField tf1 = new JTextField();
private JTextField tf2 = new JTextField();
private JTextField tf3 = new JTextField();
private JTextField tf4 = new JTextField();
private JTextField tf5 = new JTextField();


public static void Texte(String text){
User1.ausg.append("\n"+text);
}

public User1(){
super("Benutzer anlegen");

JPanel pa = new JPanel();
pa.setLayout(new GridBagLayout());

JLabel la = new JLabel();
la.setOpaque(true);
la.setFont(new Font("Helvetica", Font.BOLD, 20));
la.setText("Benutzer anlegen");
pa.add(la, new GridBagConstraints(0,0,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

JLabel la1 = new JLabel();
la1.setOpaque(true);
la1.setFont(new Font("Helvetica", Font.BOLD, 14));
la1.setText("Benutzername: ");
pa.add(la1, new GridBagConstraints(0,1,1,1,1.0,0.1,
GridBagConstraints.CENTER,GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

JLabel la2 = new JLabel();
la2.setOpaque(true);
la2.setFont(new Font("Helvetica", Font.BOLD, 14));
la2.setText("Paßwort: ");
pa.add(la2, new GridBagConstraints(0,2,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

JLabel la3 = new JLabel();
la3.setOpaque(true);
la3.setFont(new Font("Helvetica", Font.BOLD, 14));
la3.setText("Datenbank: ");
pa.add(la3, new GridBagConstraints(0,3,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

JLabel la4 = new JLabel();
la4.setOpaque(true);
la4.setFont(new Font("Helvetica", Font.BOLD, 14));
la4.setText("Host: ");
pa.add(la4, new GridBagConstraints(0,4,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));


tf1.setFont(new Font("Helvetica", Font.PLAIN, 14));
pa.add(tf1, new GridBagConstraints(1,1,1,1,1.0,0.1,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

tf2.setFont(new Font("Helvetica", Font.PLAIN, 14));
pa.add(tf2, new GridBagConstraints(1,2,1,1,1.0,0.1,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

tf3.setFont(new Font("Helvetica", Font.PLAIN, 14));
pa.add(tf3, new GridBagConstraints(1,3,1,1,1.0,0.1,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

tf4.setFont(new Font("Helvetica", Font.PLAIN, 14));
pa.add(tf4, new GridBagConstraints(1,4,1,1,1.0,0.1,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

JLabel l2 = new JLabel();
l2.setOpaque(true);
l2.setFont(new Font("Helvetica", Font.BOLD, 14));
l2.setText("Option: ");
pa.add(l2, new GridBagConstraints(0,5,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

tf5.setFont(new Font("Helvetica", Font.PLAIN,14));
pa.add(tf5, new GridBagConstraints(1,5,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0),1,1));

JLabel l = new JLabel();
l.setOpaque(true);
l.setFont(new Font("Helvetica", Font.BOLD, 14));
l.setText("Bitte wählen Sie die entsprechende Option!");
pa.add(l, new GridBagConstraints(1,5,1,1,1.0,1.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));

ausg.setFont(new Font("Helvetica", Font.PLAIN, 14));
ausg.setEditable(false);
JScrollPane scro = new JScrollPane(ausg);
pa.add(scro, new GridBagConstraints(0,6,3,3,1.0,1.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));

bu10= new JButton();
bu10.setText("Benutzer speichern");
bu10.setBackground(Color.green);
bu10.addActionListener(this);
pa.add(bu10,new GridBagConstraints(0,9,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

bu20= new JButton();
bu20.setText("Schließen");
bu20.setBackground(Color.red);
bu20.addActionListener(this);
pa.add(bu20,new GridBagConstraints(1,9,1,1,1.0,0.1,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0),1,1));

this.getContentPane().setLayout(new GridBagLayout());
this.getContentPane().add(pa, new GridBagConstraints(0,0,1,1,1.0,1.0,
GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(0,0,0,0),1,1));
this.pack();
this.setVisible(true);

}
//ActionListener für die Buttons
public void actionPerformed(ActionEvent e){
Object ob = e.getSource();
if(ob == bu10){
User1.Texte("Button gedrückt");
Grant G = new Grant();

}
if(ob == bu20){
this.dispose();
}
}

}

Verarbeitung = Grant.java
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);
}
}
}
 

bambi

Bekanntes Mitglied
Deine connection ist null:

Code:
Connection conn = null;
...
stmt = conn.prepareStatement(sql);

Die musst Du schon irgendwo initialisieren - oder habe ich da jetzt was uebersehen?
 
G

Gast

Gast
Ich bau die Connection in der Klasse Verbindung ( s.u. ) auf. Connection conn = null hab ich eigentlich nur gemacht, weil es in abollms Verbesserung meines Versuchs so drinsteht...

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.sql.*;

//Klasse mit der die Verbindung zur MySQL - Datenbank aufgebaut wird
public class Verbindung {
public static Connection conn = null;
public Verbindung(String user, String password, String dbhost, String dbname ){

Komplett.Text("Button gedrückt");
try{
Komplett.Text("Treiber wird geladen");
//Laden des Treibers
Class.forName("com.mysql.jdbc.Driver");
Komplett.Text("com.mysql.jdbc.Driver");
Komplett.Text("Treiber wird geladen");
}
catch(ClassNotFoundException cnfs){
Komplett.Text("Class not Found");
}
try{
//conn-String erstellen
String connstr = "jdbc:mysql://" + dbhost + "/" + dbname;
Komplett.Text(connstr);
//Verbindungsaufbau
conn = DriverManager.getConnection(connstr, user, password);
Komplett.Text("Verbindungsaufbau");
Komplett.test = true;}
//Abfangen der Fehlermeldung
catch(SQLException sqle){
Komplett.Text("Verbindung fehlgeschlagen: " + sqle.getMessage());
}
}
}
 

bambi

Bekanntes Mitglied
Hast Du das mal genauer angesehen und abgefangen?

Code:
if (conn != null)  {
    stmt = conn.prepareStatement(sql);
}  else  {
    System.out.println("Connection is null");
    return; // oder was anderes
}

Versuchen koennt' man's ja mal. Ich haett' sonst im Moment auch keine Idee...
 

Bleiglanz

Gesperrter Benutzer
Ich bau die Connection in der Klasse Verbindung ( s.u. ) auf. Connection conn = null hab ich eigentlich nur gemacht, weil es in abollms Verbesserung meines Versuchs so drinsteht...
...
du postest immer den ganzen zeugs und sagst nicht, was und wo der aktuelle fehler ist???

warum ist conn static? lass das static weg!
 
G

Gast

Gast
Ich poste das ganze Zeug immer weil danach gefragt wird...
Der Fehler ist immer noch der wie am Anfang, das das Statement nicht funzt ( normales statement bringt Fehler s.o. / preparedStatement kann nicht ausgeführt werden s.o.)...
 
G

Gast

Gast
Vielleicht hilft das weiter den Grund für mein Problem zu finden.
Wenn ich:
a) stmt = conn.prepareStatement(sql); in obigem Code mache,
dann kommt für stmt = conn.prepareStatement(sql); ein NullPointer und es kommt die Ausgabe die Enumerator Ausgabe bevor das Prog den Fehler bringt

b) stmt = Verbindung.conn.prepareStatement(sql); ( conn immer noch static in Klasse Verbindung ) dann krieg ich nen Nullpointer in
stmt.executeUpdate(sql); und es kommt die SQLException This Command is not Supportet by prepared Statement yet...
 

bronks

Top Contributor
@Gast:
Ich komm da nicht mehr mit. Das ist Verwirrung pur.

Wenn Du hier registriert wärst und in Deinem Profil Deinen Wohnort eingetragen hättest, dann könnte sich evtl. jemand aus Deiner Nähe per PN melden, der sich von Dir auf Kaffe&Kuchen einladen läßt und sich die Sache live ansieht.
 

abollm

Top Contributor
bronks hat gesagt.:
@Gast:
Ich komm da nicht mehr mit. Das ist Verwirrung pur.

Wenn Du hier registriert wärst und in Deinem Profil Deinen Wohnort eingetragen hättest, dann könnte sich evtl. jemand aus Deiner Nähe per PN melden, der sich von Dir auf Kaffe&Kuchen einladen läßt und sich die Sache live ansieht.

Guter Vorschlag!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R MySQL Syntax für suche nach Textteil Datenbankprogrammierung 8
M MySQL Error in SQL syntax Datenbankprogrammierung 10
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
Cypha JPA Syntax error - falscher Aufbau? Datenbankprogrammierung 3
Kenan89 Fremdschlüssel, korrekte Syntax? Datenbankprogrammierung 2
D Frage zu SQL Syntax Datenbankprogrammierung 17
P [Hibernate] SQL Syntax-Error Datenbankprogrammierung 2
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
E MySQL 2 Fragen zur Syntax von SQL-Abfragen Datenbankprogrammierung 8
L You have an error in your sql syntax Datenbankprogrammierung 4
D Verknüpfung auflösen für Frontend Datenbankprogrammierung 7
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
Zrebna Empfehlung für ein kostenloses DB-Hosting gesucht Datenbankprogrammierung 6
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Kirby.exe Denkanstoß für Ranking Datenbankprogrammierung 1
L Oracle Repräsentative Namen für die Column Types Datenbankprogrammierung 9
OnDemand Struktur für Parent / Child Produkt Datenbankprogrammierung 5
N ORM für Sqlite Datenbankprogrammierung 4
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
F MariaDatabase Einstellungen für Verbindungen Datenbankprogrammierung 5
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
M Idee Umsetzung //NFC Eintrittskarten für Geburtstag Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
J Tipps für ERM Datenbankprogrammierung 4
P Highlevel-Lösung für Speicherung von Baumstruktur mit unbekannter Tiefe Datenbankprogrammierung 1
F welche Datenbank für Messwerte? Datenbankprogrammierung 4
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
M DB Schema für Vokabeltrainer Datenbankprogrammierung 2
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
I Query für Geburtstage Datenbankprogrammierung 6
L Zentrale Datenbank im Internet für Spiele Highscores? Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
ruutaiokwu code-formatter für t-sql... Datenbankprogrammierung 12
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
T Mehrsprachigkeit für Tabellenfelder Datenbankprogrammierung 6
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
P MySQL Historie für ein Objekt anlegen Datenbankprogrammierung 5
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
O Datenbankschnittstelle für Java Datenbankprogrammierung 8
L Datenbank für kleinere Anwendungen Datenbankprogrammierung 3
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S ich brauche tipps für JDBC Datenbankprogrammierung 4
I Hibernate - Best Practice für Lazy Loading Datenbankprogrammierung 3
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
GianaSisters SQL Befehl für allgemeine Datenbankexistenz Datenbankprogrammierung 4
B Beispiel für sicheres DBUsername/DBPassword handling Datenbankprogrammierung 4
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
C Embedded DB für Java Datenbankprogrammierung 26
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
F Performance-Tool für Oracle Datenbankprogrammierung 2
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
C Split String für SQl query Datenbankprogrammierung 10
A update methode für datenbank Datenbankprogrammierung 2
N Datenbank für Dateien Datenbankprogrammierung 6
N Datenbank für einen Stundenplan Datenbankprogrammierung 4
G welche Datenbanktabellen für folgende Attribute Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
J Buffer Manager für Datenbank Datenbankprogrammierung 4
F SQL Voraussetzung für JDBC? Datenbankprogrammierung 10
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
T SSL Zertifikat für mysql datenbankzugriff Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben