# java datenbank ungültiger Cursorstatus



## PELLE (16. Jul 2006)

```
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

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

public class login extends JFrame
{
   
   private JPanel jPanel12;
   private JLabel statusMsgLB;
   private JLabel statusLB;
   private JButton abbr;
   private JButton ok;
   private JLabel login;
   private JPasswordField passein;
   private JComboBox statusein;
   private JTextField nameein;
   private JLabel account;
   private JLabel passwort;
   private JLabel name;
   private JPanel eingabe;
   private AdminZugriff adminPanel;
   private LehrerZugriff lehrerPanel;
   private SchülerZugriff schülerPanel;
   static Connection con;
   static Statement sqlAnweisung;
   static ResultSet result;
   static String sqlzeile;
   static String nameeinErgebnis;
   static String passwortErgebnis;
   static String sqlname;
   static String sqlpasswort;

   
   
   public login()
   {
      super();   
      try
      {
         javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }  
     
      //setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	  setLayout(null);          
                  
	    login = new JLabel();             
	    statusMsgLB = new JLabel();           
	    name = new JLabel();
	    nameein = new JTextField();
	    passwort = new JLabel();
	    passein = new JPasswordField();
	    account = new JLabel();
	    statusein = new JComboBox(); 
	    ok = new JButton();  
	    abbr = new JButton();
		statusLB = new JLabel();
	                    
	    add(nameein);
	    add(name);
	    add(passein);
	    add(statusein); 
	    add(statusMsgLB);
	    add(account);                        
	    add(passwort);	    
	    add(login);
	    add(ok);
	    add(statusLB);
		add(abbr);
		
		nameein.setBounds(20,20,100,30);
		name.setBounds(120,20,100,30);
		passein.setBounds(20,60,100,30);
		statusein.setBounds(120,60,100,30);
		statusMsgLB.setBounds(20,90,100,30);
		account.setBounds(20,120,100,30);
		passwort.setBounds(20,150,100,30);
		login.setBounds(20,180,100,30);
		ok.setBounds(20,210,100,30);
		statusLB.setBounds(240,20,100,30);
		abbr.setBounds(270,20,100,30);		
		
	                   
	    passwort.setText("Passwort:");
	    account.setText("Account:");
	    passwort.setText("Passwort:");
	    name.setText("Name:"); 
	    statusMsgLB.setText("Alles OK");
	    login.setText("Bitte Loggen Sie sich ein:");
	    abbr.setText("Abbrechen");    
	    statusLB.setText("Status:");
		ok.setText("OK");
                 
       statusein.addItem("Schüler");
       statusein.addItem("Lehrer");
       statusein.addItem("Admin");
       
      ok.addActionListener(new ButLog());				
	  abbr.addActionListener(new ButLog());
      
      try
      {
    	  connectDB();  
      }
      catch(Exception e)
      {
    	  e.printStackTrace();
      }      
   }
   public static void connectDB() throws ClassNotFoundException, SQLException
   {
	   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
	   con=DriverManager.getConnection("jdbc:odbc:login","","");
	   
   }     
      
   
   public void passPruefen ()
   {
   }
   
   class ButLog implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {    	  
    	  String pass,name;
    	  if (e.getSource().equals(ok))
    	  {   
    		  nameeinErgebnis  = nameein.getText();    		      		  
    		  passwortErgebnis = passein.getText();
    		  //passwortErgebnis = (passein.getPassword()).toString();
			  			    		  
    		  //---------------------------------- Schüler Account Abrage ---------------------------------------//	 
			  if (statusein.getSelectedItem().toString().equals("Schüler"))
    		  {		
				  try
	    			 {				  
					  sqlname = "Select * from LoginSchueler where Name = '"+nameeinErgebnis+"'";
	    			  sqlAnweisung=con.createStatement();
	    			  result =  sqlAnweisung.executeQuery(sqlname);    				
	    			  result.next();
	    				
	    			  name = result.getString("Name");
	    			  pass = result.getString("Passwort");
	    			  result.close();
	    			  	    			 	    			  
	    			  if (nameeinErgebnis.equals(name) && passwortErgebnis.equals(pass))
	    			  {				
		      	    	 	schülerPanel = new SchülerZugriff(); 		      	    	 	 
	    			  }
	    			  else
	    			  {
	    					statusMsgLB.setText("Password/User existiert nicht");
	    			  }  			 
	    			  
	    			 }
	    			 catch (SQLException a)
	    			 {
	    				 a.printStackTrace();   				 
	    			 }  					
    					
    			 }
			  //------------------------------------- Lehrer Account Abfrage ------------------------------------//
			  if (statusein.getSelectedItem().toString().equals("Lehrer"));
 			  {		
				  try
	    			 {				  
					  sqlname = "Select * from LoginLehrer where Name = '"+nameeinErgebnis+"'";
	    			  sqlAnweisung=con.createStatement();
	    			  result =  sqlAnweisung.executeQuery(sqlname);    				
	    			  result.next();
	    				
	    			  name = result.getString("Name");
	    			  pass = result.getString("Passwort");
	    			  result.close();
	    			  	    			 	    			  
	    			  if (nameeinErgebnis.equals(name) && passwortErgebnis.equals(pass))
	    			  {				
		      	    	 	lehrerPanel = new LehrerZugriff(); 		      	    	 	 
	    			  }
	    			  else
	    			  {
	    					statusMsgLB.setText("Password/User existiert nicht");
	    			  }  			 
	    			  
	    			 }
	    			 catch (SQLException a)
	    			 {
	    				 a.printStackTrace();   				 
	    			 } 	    			 
 			  }	    			 
    		  //------------------------------------- Admin Account Abfrage -------------------------------------//	 
			  if (statusein.getSelectedItem().toString().equals("Admin"));
 			  {		
				  try
	    			 {				  
					  sqlname = "Select * from LoginAdmin where Name = '"+nameeinErgebnis+"'";
	    			  sqlAnweisung=con.createStatement();
	    			  result =  sqlAnweisung.executeQuery(sqlname);    				
	    			  result.next();
	    				
	    			  name = result.getString("Name");
	    			  pass = result.getString("Passwort");
	    			  result.close();
	    			  	    			 	    			  
	    			  if (nameeinErgebnis.equals(name) && passwortErgebnis.equals(pass))
	    			  {				
		      	    	 	adminPanel = new AdminZugriff(); 		      	    	 	 
	    			  }
	    			  else
	    			  {
	    					statusMsgLB.setText("Password/User existiert nicht");
	    			  }  			 
	    			  
	    			 }
	    			 catch (SQLException a)
	    			 {
	    				 a.printStackTrace();   				 
	    			 } 
	    			 
 			  }
	    	  //--------------------------------------- Login Abbrechen ---------------------------------------//
	    	  if (e.getSource().equals(abbr))
	    	  {
	    		  try
	    		  {
	    			  System.exit(0);     			  
	    		  }
	    		  catch (Exception a)
	    		  {
	    			  a.printStackTrace();    			  
	    		  }    		  
	    	  }	    	  
	    	  //---------------------------------- Ende Login Abbrechen ---------------------------------------//
      }      
    }
  }   
   
   
   public static void main(String[] args) //throws ClassNotFoundException, SQLException
   {
      login inst = new login();
      inst.setSize(600,400);
      inst.setLocation(300,200);
      inst.setVisible(true);
   }
}
```

Fehlermeldung:


```
[Microsoft][ODBC Driver Manager] Ungültiger Cursorstatus
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
	at login$ButLog.actionPerformed(login.java:185)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Ungültiger Cursorstatus
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
	at login$ButLog.actionPerformed(login.java:214)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```


Warum ungültiger Cursorstatus?


----------



## foobar (16. Jul 2006)

Wann tritt der Fehler denn auf?

Du solltest auf jeden Fall zuerst mal prüfen, ob die DB überhaupt ein Result geliefert hat:


```
if (result.next())
{
   name = result.getString("Name");
  pass = result.getString("Passwort");
  
}
result.close();
```


----------



## PELLE (16. Jul 2006)

http://rapidshare.de/files/25980097/4KlassenUndDatenbank.rar.html

da sind alle 4 klasse drin und die mdb datenbank für access!

Der Witz ist ja wenn der login geprüft darf nur ein neues Fenster geöffnet werden, wenn die password und usereingabe mit der datenbank übereinstimmt. Ich gebe richtige Daten ein und das Fenster öffnet sich, aber im gleichen Moment kommt auch die Fehlermeldung cursor usw.


----------



## thE_29 (16. Jul 2006)

con=DriverManager.getConnection("jdbcdbc:login","","");

Weißt du was du dort tust 


Du Fragst auf eine ODBC Quelle (sagt dir ODBC was? Weißt du wie man das einrichtet unter Windows?) zu. 

Ist die nicht definiert (so wie bei mir) so kommt ein Fehler!

Willst du direkt auf die Datei zugreifen (weil du kp von ODBC hast) dann geht das so:


```
String db = System.getProperty("user.dir"); //holt das aktuelle Verzeichnis
	   if(!db.endsWith(java.io.File.separator))
		  db = db.concat(java.io.File.separator);
	   db = db.concat("AccessDB.mdb");
	   con=DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + db,"","");
```

Oder du richtest eine ODBC Quelle ein die den Namen "login" hat und dann gehts auch!


----------



## PELLE (16. Jul 2006)

schau mal the_29 ich denke meine Verbindung zur Datenbank besteht, nur bekomme wie gesagt diesen Fehler siehe oben...

sag mir bitte wenn ich was falsch machte aber es sieht gut aus:

bzw. er meckert ja net dass er die verbindung nicht herstellen kann bzw. den quellnamen net findet!


----------



## thE_29 (16. Jul 2006)

WOaaa

Ich sehs schon!

result.next();

                  name = result.getString("Name");
                  pass = result.getString("Passwort");

Wer sagt dir das es bei dem next was gab?!

if(result.next())
{
name = ..
pass = ...
}

PS.: Ich bekam auch den Cursor Fehler, weil ich aber keine ODBC Quelle eingetragen gehabt habe... (bei mir hats den beim Einloggen aufgestellt)


----------



## PELLE (16. Jul 2006)

ok habe den code nochmals geändert und auch den restlichen Jigloo müll code entfernt:


```
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import java.awt.Font;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class login extends JFrame implements ActionListener
{    
   private JLabel statusMsgLB;
   private JLabel statusLB;
   private JButton abbrBT;
   private JButton okBT;
   private JLabel loginLB;
   private JPasswordField passeinTF;
   private JComboBox statuseinCB;
   private JTextField nameTF;
   private JLabel accountLB;
   private JLabel passwortLB;
   private JLabel nameLB;  
   private AdminZugriff adminPanel;
   private LehrerZugriff lehrerPanel;
   private SchülerZugriff schülerPanel;
   static Connection con;
   static Statement sqlAnweisung;
   static ResultSet result;
   static String sqlzeile;
   static String nameeinErgebnis;
   static String passwortErgebnis;
   static String sqlname;
   static String sqlpasswort;
   private String name, pass;
   
   public login()
   {
      super("Datenbank-Login");   
      try
      {
         javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }  
     
      setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	  setLayout(null);          
                  
	    loginLB = new JLabel("Bitte Loggen Sie sich ein:");             
	    statusMsgLB = new JLabel("Alles OK");           
	    nameLB = new JLabel("Name:");
	    nameTF = new JTextField();
	    passwortLB = new JLabel("Passwort:");
	    passeinTF = new JPasswordField();
	    accountLB = new JLabel("Account:");
	    statuseinCB = new JComboBox(); 
	    okBT = new JButton("OK");  
	    abbrBT = new JButton("Abbrechen");
		statusLB = new JLabel("Status:");	
	                    
	    add(nameTF);
	    add(nameLB);
	    add(passeinTF);
	    add(statuseinCB); 
	    add(statusMsgLB);
	    add(accountLB);                        
	    add(passwortLB);	    
	    add(loginLB);
	    add(okBT);
	    add(statusLB);
		add(abbrBT);
		
		loginLB.setBounds(20,20,250,30);
		nameTF.setBounds(120,60,100,30);
		nameLB.setBounds(20,60,100,30);		
		passeinTF.setBounds(120,90,100,30);
		passwortLB.setBounds(20,90,100,30);
		accountLB.setBounds(20,120,100,30);		
		statuseinCB.setBounds(120,120,100,30);
		statusMsgLB.setBounds(120,150,100,30);		
		statusLB.setBounds(20,150,100,30);
		okBT.setBounds(20,210,100,30);
		abbrBT.setBounds(120,210,100,30);	 
		
		loginLB.setFont(new Font("Arial",Font.BOLD, 14));	   
                 
       statuseinCB.addItem("Schüler");
       statuseinCB.addItem("Lehrer");
       statuseinCB.addItem("Admin");
       
       okBT.addActionListener(this);				
	   abbrBT.addActionListener(this);
	  
	  setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      
      try
      {
    	  connectDB();  
      }
      catch(Exception e)
      {
    	  e.printStackTrace();
      }      
   }
   public static void connectDB() throws ClassNotFoundException, SQLException
   {
	   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
	   con=DriverManager.getConnection("jdbc:odbc:login","","");	   
   }    
   
      public void actionPerformed(ActionEvent e)
      {     	  
    	  
    	   
    	  nameeinErgebnis  = nameTF.getText();    		      		  
		  passwortErgebnis = passeinTF.getText();
    	  if (e.getSource().equals(okBT))
    	  {  	    		  
    		  //---------------------------------- Schüler Account Abrage ---------------------------------------//	 
			  if (statuseinCB.getSelectedItem().toString().equals("Schüler"))
    		  {		
				  try
	    			 {				  
						  sqlname = "Select * from LoginSchueler where Name = '"+nameeinErgebnis+"'";
		    			  sqlAnweisung=con.createStatement();
		    			  result =  sqlAnweisung.executeQuery(sqlname);    				
		    			 	    			  
		    			  result.next();
		    			  if (result.next()) 
						  {	
		    			  name = result.getString("Name");
		    			  pass = result.getString("Passwort");
	    			      }
		    			  result.close(); 
		    			  
		    			  	    			 	    			  
		    			  if (nameeinErgebnis.equals(name) && passwortErgebnis.equals(pass))
		    			  {				
			      	    	 	schülerPanel = new SchülerZugriff(); 		      	    	 	 
		    			  }
		    			  else
		    			  {
		    					statusMsgLB.setText("Password/User existiert nicht");
		    			  }  			 
		    			  nameTF.setText(name+pass);
	    			 }
	    			 catch (SQLException a)
	    			 {
	    				 a.printStackTrace();   				 
	    			 }     					
    			 }
			  //------------------------------------- Lehrer Account Abfrage ------------------------------------//
			  if (statuseinCB.getSelectedItem().toString().equals("Lehrer"));
 			  {		
				  try
	    			 {				  
						  sqlname = "Select * from LoginLehrer where Name = '"+nameeinErgebnis+"'";
		    			  sqlAnweisung=con.createStatement();
		    			  result =  sqlAnweisung.executeQuery(sqlname);    				
		    			  
		    			  result.next();
		    			  if (result.next()) 
						  {	
		    			  name = result.getString("Name");
		    			  pass = result.getString("Passwort");
	    			      }
		    			  result.close();
		    			  	    			 	    			  
		    			  if (nameeinErgebnis.equals(name) && passwortErgebnis.equals(pass))
		    			  {				
			      	    	 	lehrerPanel = new LehrerZugriff(); 		      	    	 	 
		    			  }
		    			  else
		    			  {
		    					statusMsgLB.setText("Password/User existiert nicht");
		    			  }  		 
	    			  
	    			 }
	    			 catch (SQLException a)
	    			 {
	    				 a.printStackTrace();   				 
	    			 } 	    			 
 			  }	    			 
    		  //------------------------------------- Admin Account Abfrage -------------------------------------//	 
			  if (statuseinCB.getSelectedItem().toString().equals("Admin"));
 			  {		
				  try
	    			 {				  
						  sqlname = "Select * from LoginAdmin where Name = '"+nameeinErgebnis+"'";
		    			  sqlAnweisung=con.createStatement();
		    			  result =  sqlAnweisung.executeQuery(sqlname);    				
		    			  result.next();
		    			  if (result.next()) 
						  {	
		    			  name = result.getString("Name");
		    			  pass = result.getString("Passwort");
	    			      }
		    			  result.close();
		    			  	    			 	    			  
		    			  if (nameeinErgebnis.equals(name) && passwortErgebnis.equals(pass))
		    			  {				
			      	    	 	adminPanel = new AdminZugriff(); 		      	    	 	 
		    			  }
		    			  else
		    			  {
		    					statusMsgLB.setText("Password/User existiert nicht");
		    			  }  			 
	    			  
	    			 }
	    			 catch (SQLException a)
	    			 {
	    				 a.printStackTrace();   				 
	    			 } 
	    			 
 			  }
	    	  //--------------------------------------- Login Abbrechen ---------------------------------------//
	    	  if (e.getSource().equals(abbrBT))
	    	  {
	    		  try
	    		  {
	    			  System.exit(0);     			  
	    		  }
	    		  catch (Exception a)
	    		  {
	    			  a.printStackTrace();    			  
	    		  }    		  
	    	  }	    	  
	    	  //---------------------------------- Ende Login Abbrechen ---------------------------------------//
         	      	    	  
    	  }   	  
    	  
    }
     
   
   
   public static void main(String[] args) //throws ClassNotFoundException, SQLException
   {
      login loginWindow = new login();
      loginWindow.setSize(300,300);
      loginWindow.setLocation(300,200);
      loginWindow.setResizable(false);
      loginWindow.setVisible(true);
   }
}
```


ok es läuft jetzt nur wenn ich den namen und pass in ein JTextfield ausgeben also so: nameTF.setText(name+pass);

steht dann in dem JTextField: "nullnull" drin, kein Wunder werde ich net eingeloggt!


----------

