Announcement

Collapse
No announcement yet.

OracleSearcher macht nichts mehr

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OracleSearcher macht nichts mehr

    Originally posted by Christian Marquardt View Post
    Wie man ein neues Thema eröffnet dürfte nicht so schwer sein

    Würde empfehlen, das nacheinander zu programmieren

    Wenn du die Ergebnisse der ersten Abfrage in der zweiten brauchst; erst die Erste Abfrage tätigen, dann die Zweite mit den Ergebnissen der Ersten
    Code:
    public OracleSearchEngine() {
    		try {
    			// Öffnen der Verbindung
    			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    			connection = java.sql.DriverManager.getConnection(conURL, userName,
    					password);
    			System.out.println("Verbindung aufgebaut");
    
    			Statement stmt = connection.createStatement();
    			ResultSet rs = stmt.executeQuery("SELECT " + ui.ui.select
    					+ " FROM " + ui.ui.from + " WHERE " + ui.ui.where + " = "
    					+ ui.ui.search + "");
    			ResultSet rss = stmt
    					.executeQuery("select column_name, data_type, data_length from user_tab_cols where table_name="
    							+ "'" + ui.ui.from + "'" + " order by column_id");
    			while (rss.next()) {
    				String perso = rss.getString("COLUMN_NAME");
    
    				while (rs.next()) {
    					String perso1 = rs.getString(perso);
    
    					System.out.println(perso1);
    
    				}
    			}
    
    			// Schließen der Verbindung
    			// connection.close();
    			// System.out.println("Verbindung abgebaut");
    		} catch (Exception exc) {
    			System.err.println("Es ist ein Fehler aufgetreten:\n"
    					+ exc.getMessage());
    			exc.printStackTrace();
    
    			try {
    				// Wenn ein Fehler auftritt, Fehler ausgeben und versuchen
    				// die Datenbank-Verbindung zu schließen.
    				connection.close();
    				System.err.println("Verbindung abgebaut");
    			} catch (SQLException sqlexc) {
    				System.err
    						.println("Verbindung konnte nicht geschlossen werden.");
    			} catch (NullPointerException nulexc) {
    				System.err.println("Es wurde keine Verbindung geoeffnet.");
    			}
    		}
    	}
    Sorry,
    dachte des gehört noch hier zum Thema. Jetzt habe ich es so gemacht, er wirft mir keine exception aber er macht auch sonst nichts.

  • #2
    Du machst die immer noch gleichzeitig, also erst die erste Abfrage, MIT diesem Resultset die zweite Abfrage
    Christian

    Comment


    • #3
      Vielleicht ein Inner Join?

      Hallo Royalbunker,

      wenn Du mit den Ergebnissen der ersten Abfrage Felder aus der zweiten suchst, dann tuts vielleicht auch ein Inner-Join, der als Ergebnis ein einziges ResultSet mit allen nötigen Daten liefert. Das macht den Java-Code schlanker, ist in der Regel performanter und, wenn Du PreparedStatements dafür nutzt, nochmal performanter und sicherer. Ich hab leider aus den beiden Select-Statements nicht so richtig erkennen können, wass Du ausliest, sonst hätt ich Dir den SQL-String noch gepostet.

      Gruß ngomo
      http://www.winfonet.eu

      Comment


      • #4
        Hi,

        ich habe alle alten Probleme beseitigt, jetzt tretten neue auf

        Code:
        public OracleSearchEngine() {
        		try {
        			// Opens the connection with an JDBC Driver
        			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        			connection = java.sql.DriverManager.getConnection(conURL, userName,
        					password);
        			System.out.println("Connection established!");
        
        			Statement stmt = connection.createStatement();
        			ResultSet rs = stmt.executeQuery("SELECT " + ui.Ui.select
        					+ " FROM " + ui.Ui.from + " WHERE " + ui.Ui.where + " = "
        					+ ui.Ui.search + "");
        
        			if (rs.next()) {
        				output = rs.getString(ui.Ui.select);
        			} else {
        				output = "No value found!";
        			}
        
        		} catch (Exception exc) {
        			System.err.println("An error has occurred:\n" + exc.getMessage());
        			exc.printStackTrace();
        			output = exc.getMessage();
        			try {
        				// If an error is occurred, print the error and try to close the
        				// connection.
        				connection.close();
        				System.err.println("Connection lost!");
        			} catch (SQLException sqlexc) {
        				System.err.println("Connection can't be closed.");
        			} catch (NullPointerException nulexc) {
        				System.err.println("No connection where opened.");
        			}
        		}
        	}
        Das ist schonmal der code.

        Wenn ich in meiner GUI bei SELECT (ui.Ui.select) ein "*" eingebe oder mehrere Spaltennamen wie z.B. NAME, VORNAME sagt er immer Ungültiger Spaltenname. Wenn ich nur eine Spaltennamen nehmen funktioniert es wunderbar.


        Danke schonmal

        Comment


        • #5
          Natürlich kann dann der Aufruf von getString() auf dem ResultSet nicht funktionieren. Schau die mal die javadoc von ResultSetMetaData an, wenn du generisch auf die Spalten zugreifen willst.


          Originally posted by Royalbunker View Post
          Hi,

          ich habe alle alten Probleme beseitigt, jetzt tretten neue auf

          Code:
          ...
          				output = rs.getString(ui.Ui.select);
          ...
          Das ist schonmal der code.

          Wenn ich in meiner GUI bei SELECT (ui.Ui.select) ein "*" eingebe oder mehrere Spaltennamen wie z.B. NAME, VORNAME sagt er immer Ungültiger Spaltenname. Wenn ich nur eine Spaltennamen nehmen funktioniert es wunderbar.


          Danke schonmal

          Comment


          • #6
            Anbei mal ein Link zu einem Beispiel für "select *":

            http://www.java2s.com/Code/Java/Data...aResultSet.htm

            Comment

            Working...
            X