Zum Inhalt springen

Empfohlene Beiträge

Geschrieben


public class DateiEinlesen {


    public static void main(String[] args) throws Exception {


        //Variable deklarieren

        String statement;


        //Ort der Datei

        File file = new File("c:/x/SQL_Statements.txt");


        //Zeilenweise auslesen

        BufferedReader br = new BufferedReader(new FileReader(file));


        while ((statement = br.readLine()) != null) {

            System.out.println(statement);

        }


        br.close();


    }

}


public class DB {


    public static void main (String[] args) throws SQLException {

        try {

            DB db = new DB("x");

            ResultSet rs = db.query("//hier soll das erste ausgelesene Statement hin");


            rs.first();

            System.out.println("aktualisiert = "+rs.getInt("aktualisiert"));

            rs.close();

        } catch(Exception e) {

            e.printStackTrace();

        }


        try {

            DB db = new DB("x");

            ResultSet rs = db.query("//hier soll das zweite ausgelesene Statement hin");


            rs.first();

            System.out.println("neu = "+rs.getInt("neu"));

            rs.close();

        } catch(Exception e) {

            e.printStackTrace();

        }




    }

Hallo,

da ich noch ein Anfänger bin, habe ich Schwierigkeiten eine Main zu den zwei Klassen "DateiEinlesen" und "DB" (siehe oben) passend zu erstellen. In der Main muss ja das eingelesene Statement der Klasse "DB" übergeben und ausgeführt werden. Ich habe leider keinen Plan wie ich die Main erstellen muss, um dan ein Ergebniss der Abfrage zu erhalten. Könntet ihr mir da weiterhelfen?

Danke im Vorraus.

Geschrieben

Was du machen möchtest ist komplett entgegen jeglicher objektorientierter Ansätze und wirkt deshalb auch unnatürlich und schwierig für dich. Was musst du machen? Die Zwei-Minuten-Lösung gibt es da leider nicht - du solltest dich intensiv mit dem Konzept OO im Allgemeinen und Java im Speziellen beschäftigen und wirst, wenn du das ganze verstanden hast, automatisch zu deiner Lösung kommen.

Geschrieben

Hey,

also erstmal hast du da glaube ich etwas falsch verstanden.

Ein Programm braucht eine Main-Methode als Einstiegspunkt, sprich der PC muss ja wissen, wo er anfangen soll. Das heißt aber nicht, dass jede Klasse! einen Einstiegspunkt, sprich eine Main-Methode braucht.

Überleg noch mal genau, du hast kein zusammenhängendes Programm geschrieben, da der PC ja nicht wüsste welche der beiden Mains nun der Anfang ist. Du hast also zwei Programme. Und die nun miteinander zu verbinden ist weitaus schwieriger, als das was du eigentlich machen möchtest.

Bennen die Main in deiner Klasse DB um in etwas Sinnvolles, das ungefähr beschreibt was es macht. Soetwas wie zB. queryStatement und übergib dieser Methode dann dein Statement. Etwa so:

public void queryStatement(String statement)

Nun kannst du innerhalb dieser Methode auf deinen String statement zugreifen. Die Deklaration von deinem Statement innerhalb der Methode brauchst du dann nicht mehr.

Wenn du so weit bist, dann kannst du in deiner Klasse Datei Einlesen, die noch immer die Main hat, innerhalb der Main ein Object von deiner Klasse DB anlegen. Etwa so:

DB database = new DB();

Jetzt kannst du dein ausgelesenes Statement einfach an dein Objekt übergeben. Etwa so:

database.queryStatement(statement);

An diesem Punkt spring dann dein Programm in die Methode deines Objectes database, welches ja vom Typ DB, also der Klasse DB ist, und führt den Code, den du dort definiert hast aus.

Ich hoffe das ganze hilft dir etwas den Anfang zu finden und etwas genauer zu verstehen, was OOP ist. Setz dich aber auf jeden Fall noch einmal genauer mit dem Konzept der OOP auseinander ;-)

Ein Anfang ist es aber auf jeden Fall =)

Geschrieben

Hallo,

ich habe jetzt mal eine Klasse zum einlesen nach meinem Geschmack erstellt (siehe unten).

Ich habe jetzt noch paar Probleme bei der Main. Meinen Ansatz kann man unten sehen. Ich weiß zwar, dass es für manche trivial ist, aber ich hab da Probleme. Im Grunde genommen ist es nur eine Konsolenanwendung. Wie man sehen kann, möchte ich einen Schalter abfragen, der vom Nutzer aktiviert wird, sobald man das passende Statement (mind. ein Statement) gewählt hat. Das gewählte Statement kann dan sofort übernommen werden.

Mich würde es interessieren, ob die Prüfung der Parameter stimmt und wie ich das ausgewählte Statement aus der Konsole sofort abspeicher und der Klasse DB zum ausführen übermittle?.


public class ReadData {


    /**

	 *

	 * @return

	 * @throws Exception

	 */

	public String[][] read_file()throws Exception {


        //Ort der Datei

        File file = new File("c:/SQL_Statements.txt");


        //Zeilenweise auslesen

        BufferedReader br = new BufferedReader(new FileReader(file));


		//Deklaration

		String statement;

		int anzahlstatements=0;

		//Ermitteln der Anzahl an Zeilen

		while((statement = br.readLine()) !=null) {

			++anzahlstatements;

		}


		String[][] array = new String[anzahlstatements][2];

		br.close();

		br = new BufferedReader(new FileReader(file));

        for(int i = 0; i < array.length; i++)

        {

			//pro Zeile

			statement = br.readLine();

			String tmp[] = statement.split("\",,,\"");//Felder aus Datei für Zeile i in tmp eingelesen

			if(tmp.length != array[i].length) throw new Exception("größen stimmen nicht überein");

            for(int j = 0; j < array[i].length; j++)

            {

				//pro Feld

				array[i][j] = tmp[j];

            }

        }

        br.close();

		return array;

    }

}



public class Main {


		public static void main(String[] args) throws Exception{


		//1. eingabeparameter prüfen (statement gewählt? zeitangaben->variablen,etc.)


		//die Argumente der Kommandozeile, die sich im Feld args[] befinden werden ausgegeben

		for ( int i = 0; i < args.length; i++ )

			System.out.println( args[i] );


		//Um zu testen, ob auf der Kommandozeile der Schalter --name gesetzt ist

		String Schalter = "--name";

		String Kommandozeile = args[i];

		if(Schalter.equals(Kommandozeile))

		{

			System.out.println("beinhaltet --name");

		}

		else{

			System.out.println("beinhaltet nicht --name");

		}


			//3. ausführen

			//->DB::


			//4. Ausgabe in Textdatei speichern (additiv? überschreibend? einzelne Dateien?)

			//->StoreValues::


			//5. Ausgabe für evtl. weitere Exportvarianten


			//6. Ende


			//Objekt ReadData

			ReadData r1 = new ReadData();

			//Statements ausgeben

			String[][] test = r1.read_file();

			//Testweise test ausgeben

			System.out.println("Das Statement mit dem Namen "+test[0][1]+" lautet:");

			System.out.println(test[0][0]);

			System.out.println("Das Statement mit dem Namen "+test[1][1]+" lautet:");

			System.out.println(test[1][0]);

		}

}

Geschrieben

dein statement wird ja als bestimmter parameter übergeben z.b. als erster parameter

dann hast du ja zugriff darauf und kannst ihn "speichern" mit

String stmt=args[0]

setz dich zum übergeben an deiner klasse mal mit parametern auseinander, dann solltest du drauf kommen wie du das statement deiner methode übergeben kannst :)

Geschrieben

Warum Du zweimal über die Daten drüber läufst ist mir nicht klar, Du kannst einmal über alle Zeilen laufen, je eine Zeile lesen und dann direkt verarbeiten.

Außerdem solltest Du nicht mit statischen Arrays arbeiten, sondern mit Listen z.B. ArrayList oder Vector

Bitte unbedingt einmal überdenken!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...