Problem mit Klassen

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo zusammen, ich habe folgendes Problem...

Ich habe eine Klasse (txtauslesen.java)geschrieben mit der ich eine .txt Datei auslese, wo Emails untereinander drinstehen... diese werden in einzelne Arrays gepackt ... Quellcode...

Code:
import java.io.*; 
import java.util.*;
 public class txtauslesen { 
  public static void main(String[] args) { 
     int i ;
    try { 
      BufferedReader in = new BufferedReader(new FileReader("Unsubscribed_170206.txt")); 
      
         String line; 
      ArrayList list = new ArrayList(); 

      while((line = in.readLine()) != null) 
      { 
         list.add(line); 
      } 
      in.close(); 
      String[] lines = (String[]) list.toArray(new String[0]); 
      for (i=0; i<lines.length; i++) {
          
            System.out.println(lines[i]); 
      
 }
       

    } 
    catch(FileNotFoundException fnfe) { 
      System.out.println("Datei nicht gefunden!"); 
    } 
    catch(IOException ioe) { 
      System.out.println("Fehler beim Lesen!"); 
    } 
    

    
    } 
  }


Dann hab ich eine zweite Klasse (dbverbindung.java)
Hier habe ich eine Verbindung zur Datenbank hergestellt....
Jetzt will ich mit sql.append abfragen (mit den einzelnen Arrays) ob diese schon in der Datenbank vorhanden sind...
aber wie komme ich an die Werte der Arrays von txtauslesen.java ?????????
ich bitte um hilfe


Code:
import java.sql.*;




class dbverbindung  {
    public static void main (String[] args) throws SQLException  {
        
       Connection connection = null;
       Statement  statement = null;
        
       System.out.println("Verbinde....");
       
       try{
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           
           connection = DriverManager.getConnection("jdbc:odbc:Test","test","test");
           statement = connection.createStatement();
           
       }
      catch (ClassNotFoundException err){
          System.err.println("\nDB-Driver nicht gefunden!");
          System.err.println(err);
       }
       catch(SQLException err){
           System.err.println("\nConnect nicht moeglich");
           System.err.println(err);
       }
        StringBuffer sql = new StringBuffer(256);
    
        sql.append("SELECT PERSONID");
        sql.append(" From USERS");
        
        ResultSet resultSet = statement.executeQuery(sql.toString());
        
        while(resultSet.next()){
            int PERSONID = resultSet.getInt(1);
        //    String MEDIAADDRESS = resultSet.getString(2);
            System.out.println(PERSONID);
            
        }
        
   }}

Danke im Vorraus
 
Schreibe die txtauslesen.java um, so dass es eine methode gibt, die dir einen Array (oder warum nicht gleich in der ArrayList lassen) zurückgibt. ala

Code:
public class DBVerbindung {
   public void connect() {
       TxtAuslesen lesen = new TxtAuslesen();
       List emails = lesen.getEmails(); // hier in dieser Methode steht der code von deiner main
   
       // nun der Code bzgl der Datenbank
  }
}

ansonsten - schau dir erst die Grundlagen von OOP an !
 
komme hier nicht weiter.......bei "public static void main" unterstreicht er mir die zeile und sagt "invalid method declaration, return type required"

Code:
import java.io.*;
import java.util.*;

class dbver { 
   public void connect() { 
        int i ;
    try { 
      BufferedReader in = new BufferedReader(new FileReader("Unsubscribed_170206.txt")); 
      
         String line; 
      ArrayList list = new ArrayList(); 

      while((line = in.readLine()) != null) 
      { 
         list.add(line); 
      } 
      in.close(); 
      String[] lines = (String[]) list.toArray(new String[0]); 
      for (i=0; i<lines.length; i++) {
          
            System.out.println(lines[i]); 
      
          
      }
       

    } 
    catch(FileNotFoundException fnfe) { 
      System.out.println("Datei nicht gefunden!"); 
    } 
    catch(IOException ioe) { 
      System.out.println("Fehler beim Lesen!"); 
    } 
    
       class dbaus { 
        public static main (String[] args) throws SQLException  { //HIER sagt er mir "invalid method, return type required
        
       Connection connection = null;
       Statement  statement = null;
        
       System.out.println("Verbinde....");
       
       try{
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           
           connection = DriverManager.getConnection("jdbc:odbc:Omikron_Test","","");
           statement = connection.createStatement();
           
       }
      catch (ClassNotFoundException err){
          System.err.println("\nDB-Driver nicht gefunden!");
          System.err.println(err);
       }
       catch(SQLException err){
           System.err.println("\nConnect nicht moeglich");
           System.err.println(err);
       }
        StringBuffer sql = new StringBuffer(256);
    
        sql.append("SELECT PERSONID");
        sql.append(" From CONTACTPERSONMEDIA");
        
        ResultSet resultSet = statement.executeQuery(sql.toString());
        
        while(resultSet.next()){
            int PERSONID = resultSet.getInt(1);
            String MEDIAADDRESS = resultSet.getString(2);
            System.out.println(PERSONID+ "," + MEDIAADDRESS);
            
        }
        
    }}

    
    } 
  }
 
bei "public static void main" unterstreicht er mir die zeile und sagt "invalid method declaration, return type required"

Lügner!!! :noe:

Er unterstreicht die Zeile bei "public static void main" nicht.


Weil er diese Deklaration in deinem Code nämlich gar nicht findet 😎
 
Wer lesen kann ist klar im Vorteil!

Du hast das "void" vergessen.

EDIT: Da war wohl jemand schneller...
Und noch was: Stell die rote Schrift ab! Das nervt! Deine Fragen werden auch beantwortet, wenn du schwarze Schrift nimmst!
 
ok wenn ich void hinschreibe unterstreicht er die komplette untere klasse
 
Dann musste die innere Klasse in ne neue Datei auslagern und ne ordentliche Klasse draus machen!
 
ja deswegen frag ich hier im forum @tini.. das muss ja auch eigentlich so gehen.

@deathbyaclown....die zeile mit der klammer hat jetzt viel rotes weggemacht, aber jetzt meckert der bei der klammer ganz unten, er erwartet scheinbar noch eine..... funzt aber auch nicht
 
Gast hat gesagt.:
das muss ja auch eigentlich so gehen.

Warum sollte es? Ich hab gelernt: jede Klasse ne eigene Datei. Natürlich gibt es Ausnahmen (kurze innere Klassen, die nur dort gebraucht werden). Das Problem bei inneren Klassen ist meiner Ansicht nach aber, dass man von außen (von anderen Klassen außer derjenigen, wo die innere Klasse drin steht) nicht drauf zugreifen kann. Deswegen auch keine static-Methoden.
 
wie lange würde es dauern es in 2 dateien zu zerlegen?? ich hab mir die OOPs angeschaut... aber da werden ständig so blöde beispiele gebracht mit denen ich mit diesem problem nix anfangen.. ich würde gerne sehen wie dies hier in 2 dateien aussehen würde
 
Gast hat gesagt.:
wie lange würde es dauern es in 2 dateien zu zerlegen??
2 Minuten, so Pi mal Daumen!

Eine Datei dbver.java und eine Datei dbaus.java.
Aus der dbver.java schneidest du Zeile 36 bis 75 aus und fügst sie in dbaus.java ein. Fertig!

EDIT: in dbaus.java müsstest du noch die beiden import-Zeilen kopieren und
Code:
import java.sql.*;
hinzufügen
 
ich verzweifel.....hier.... ich glaub ich lass das lieber.... hab nun 2 Dateien... ich will ja .. das er in dem Code mit der Datenbank die ArrayList kennt..... damit ich die dort quaasi abfragen kann.... aber geht auch nicht
 
hab die dbaus.java in der das auslesen der textdatei geschiehte hier......dort hab ich Arrays drin, jetzt will ich "lines" in der 2ten Klasse (dbver.java) abfragen......wie???
Code:
import java.io.*;
import java.util.*;

class dbaus { 
   public void connect() { 
        int i ;
    try { 
      BufferedReader in = new BufferedReader(new FileReader("Unsubscribed_170206.txt")); 
      
         String line; 
      ArrayList list = new ArrayList(); 

      while((line = in.readLine()) != null) 
      { 
         list.add(line); 
      } 
      in.close(); 
      String[] lines = (String[]) list.toArray(new String[0]); 
      for (i=0; i<lines.length; i++) {
          
            System.out.println(lines[i]); 
      
          
      }
       

    } 
    catch(FileNotFoundException fnfe) { 
      System.out.println("Datei nicht gefunden!"); 
    } 
    catch(IOException ioe) { 
      System.out.println("Fehler beim Lesen!"); 
    } 
        
   
    } 
   }


Code:
import java.io.*;
import java.util.*;
import java.sql.*;

class dbver { 
        public static void main (String[] args) throws SQLException  { //HIER sagt er mir "invalid method, return type required 
        int i;
       Connection connection = null; 
       Statement  statement = null; 
        
       System.out.println("Verbinde...."); 
        
       try{ 
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
            
           connection = DriverManager.getConnection("jdbc:odbc:Test","",""); 
           statement = connection.createStatement(); 
            
       } 
      catch (ClassNotFoundException err){ 
          System.err.println("\nDB-Driver nicht gefunden!"); 
          System.err.println(err); 
       } 
       catch(SQLException err){ 
           System.err.println("\nConnect nicht moeglich"); 
           System.err.println(err); 
       } 
        StringBuffer sql = new StringBuffer(256); 
    
        sql.append("SELECT PERSONID, MEDIAADDRESS"); 
        sql.append(" From CONTACTPERSONMEDIA"); 
        
        ResultSet resultSet = statement.executeQuery(sql.toString()); 
        
        while(resultSet.next()){ 
            int PERSONID = resultSet.getInt(1); 
            String MEDIAADDRESS = resultSet.getString(2); 
           // System.out.println(PERSONID+ "," + MEDIAADDRESS); 
            
        } 
       
    }}
 
z.B.:
Du änderst die Methode in dbaus.java
Code:
public String[] connect() {
String[] lines;
... // der restliche Code, aber das "String[]" vor lines entfernen
return lines;
}
In dbver.java erstellst du eine neue Instanz der Klasse dbaus.java und rufst bei dieser Instanz die Methode connect() auf. Den Rückgabewert speicherst du in einem neues String[].

EDIT: oder wie oben beschrieben.
 
ohje 😀 Fachchinesich für mich
Danke für die Mühe..aber return lines unterstreicht er wieder bei mir, ich bin wirklicher anfänger ich weiß 🙂 ahhhhhhhhhhhhhhhh
wenn ich public String[] connect() und String[] lines" mache, dann meckert etwas weiter unten wo schon String[] lines definiert ist......
 
ok stimmt, aber egal wo ich das return lines; hintue , sagt er variable lines might not have been inti......

wo muss das hin?
 
Dann schreib in die erste Zeile der Methode:
Code:
String[] lines = null;
 
ok was ne instanz ist weiß ich..... wie ich sie jedoch in dbver einfügen soll weiß ich immernoch nicht..... kann mir jemand ein tipp geben?

dbaus test = new dbaus(); ??
 
so kann jetzt mit dbaus "test = new dbaus(); " und " System.out.println("test" +test.connect());" die erste klasse aufrufen.... aber wenn ich hier die lines(aus der ersten Klasse abfrage) mach der das nicht.....

Code:
import java.io.*;
import java.util.*;
import java.sql.*;

class dbver { 
        public static void main (String[] args) throws SQLException  { //HIER sagt er mir "invalid method, return type required 
        

            dbaus test = new dbaus();
            System.out.println("test" +test.connect());
           
            int i;
       Connection connection = null; 
       Statement  statement = null; 
        
       System.out.println("Verbinde...."); 
        
       try{ 
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
            
           connection = DriverManager.getConnection("jdbc:odbc:Omikron_Test","",""); 
           statement = connection.createStatement(); 
            
       } 
      catch (ClassNotFoundException err){ 
          System.err.println("\nDB-Driver nicht gefunden!"); 
          System.err.println(err); 
       } 
       catch(SQLException err){ 
           System.err.println("\nConnect nicht moeglich"); 
           System.err.println(err); 
       } 
        StringBuffer sql = new StringBuffer(256); 
    
        sql.append("SELECT PERSONID, MEDIAADDRESS"); 
        sql.append(" From CONTACTPERSONMEDIA"); 
        
        ResultSet resultSet = statement.executeQuery(sql.toString()); 
        
        while(resultSet.next()){ 
            int PERSONID = resultSet.getInt(1); 
            String MEDIAADDRESS = resultSet.getString(2); 
           // System.out.println(PERSONID+ "," + MEDIAADDRESS); 
            } 
     
        }
    }
 
Komisch, bei mir sagt "er" es nicht - benutzt du eine IDE oder wann kommt dieser Fehler? Ist die Klasse "dbaus" noch dieselbe wie oben?

Nebenbei: Klassennamen werden per Konvention groß geschrieben!
 
Schade, NetBeans kenn' ich nicht .. naja egal. Bei mir passen die beiden Klassen nicht zusammen, ich hab die dbver vom vorletzten Post und die dbaus von ganz oben, und da haut was mit der Rückgabe von "test.connect()" nicht hin. Kannst du die aktuellen Stände mal posten?
 
Code:
import java.io.*;
import java.util.*;
import java.sql.*;

class dbver { 
        public static void main (String[] args) throws SQLException  { 
            int i ;   

            dbaus test = new dbaus();
          
          //  System.out.println("test" +test.list.get(1));
           String[] lines = test.connect();
          // for ( int i=0; (test != null) && (i<test.length); i++) 
        
           
         for (i=0; i<lines.length; i++) {
      
          
      }
 
    

    
    
             
       Connection connection = null; 
       Statement  statement = null; 
        
       System.out.println("Verbinde...."); 
        
       
       try{ 
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
            
           connection = DriverManager.getConnection("jdbc:odbc:Omikron_Test","",""); 
           statement = connection.createStatement(); 
            
       } 
      catch (ClassNotFoundException err){ 
          System.err.println("\nDB-Driver nicht gefunden!"); 
          System.err.println(err); 
       } 
       catch(SQLException err){ 
           System.err.println("\nConnect nicht moeglich"); 
           System.err.println(err); 
       } 
        StringBuffer sql = new StringBuffer(256); 
       
        sql.append("SELECT PERSONID, MEDIAADDRESS"); 
        sql.append(" From CONTACTPERSONMEDIA WHERE MEDIAADDRESS = "); 
        sql.append(lines[5]);
        System.out.println("test: " +sql);
        
        ResultSet resultSet = statement.executeQuery(sql.toString()); 
        
        while(resultSet.next()){ 
            int PERSONID = resultSet.getInt(1); 
            String MEDIAADDRESS = resultSet.getString(2); 
            System.out.println(PERSONID+ "," + MEDIAADDRESS); 
            } 
  
        }
    }

Code:
import java.io.*;
import java.util.*;

class dbaus { 
    
  public String[] connect()  {
      String[] lines = null;
    int i ;
    
  
        try { 
      BufferedReader in = new BufferedReader(new FileReader("Unsubscribed_170206.txt")); 
      
      
      String line; 
      ArrayList list = new ArrayList(); 
       

      while((line = in.readLine()) != null) 
      { 
         list.add(line); 
      } 
      in.close(); 
      
      lines = (String[]) list.toArray(new String[0]); 
      for (i=0; i<lines.length; i++) {
      
         //   System.out.println(lines[i]); 
    
          
      
      }
 //System.out.println("test: " +lines[i]);
   

    } 
    catch(FileNotFoundException fnfe) { 
      System.out.println("Datei nicht gefunden!"); 
    } 
    catch(IOException ioe) { 
      System.out.println("Fehler beim Lesen!"); 
       
    } 
       
   return lines;
  
  
   
    } 
 
  
     
   }
 
Ich stell mich grad ein bisschen dämlich an, fürchte ich, aber mangels deiner Datenbank kann ich das Programm nicht laufen lassen bei mir; Compilerfehler gibt's jedenfalls nicht.
Wo ist das Problem genau? Zeile?
 
garkeins, das war schon gelöst 🙂 ich dachte du wolltest nochmal den tex haben
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben