Announcement

Collapse
No announcement yet.

Daten auf Oracledatenbank suchen

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

  • Daten auf Oracledatenbank suchen

    Hi,

    ich habe einen Oraclesearcher gebaut, der funktioniert auch (aber nur mit dem Entwickler wissen :P).

    Der Code ist:
    Code:
    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 + "");
    			while (rs.next()) {
    				String perso = rs.getString("PERSONID");
    				String person = rs.getString("NAME");
    				String personI = rs.getString("VORNAME");
    				String personID = rs.getString("GEBURTSTAG");				System.out.println(perso);
    				System.out.println(person);
    				System.out.println(personI);
    				System.out.println(personID);
    
    			}
    In dem ui.ui.select steht ca sowas drinne: T_PERSON_TEST.PERSONID, T_PERSON_TEST.NAME, T_PERSON_TEST.VORNAME, T_PERSON_TEST.GEBURTSTAG

    Da dies aber varieren kann von User zu User, müsste er immer das nach dem Punkt in einen String speichern. Aber ich finde keine Lösung wie ich das hinbekommen kann.
    Die System.out's sind nur zu test zwecken, das soll später in der GUI ausgegeben werden.

    Vielen Dank

    Royalbunker

  • #2
    Was ist das für eine DB, in der die Spalten einer Tabelle "von User zu User variieren" können?
    Christian

    Comment


    • #3
      Es geht generell nur um Oracle Datenbanken, aber aufgrund der unterschiedlichen DB's werden unterschiedliche Tables benutzt.

      Comment


      • #4
        Dann musst du ggf. über Oracle erst ermitteln

        Was für Tabellen gibt es
        Was für Spalten gibt es

        Dann die Abfrage erstellen
        Christian

        Comment


        • #5
          Die Tabelle wird angegeben in der GUI, aber wie finde ich heraus welche Spalten vorhanden sind?

          Comment


          • #6
            Verschoben -> Oracle
            Christian

            Comment


            • #7
              So das mit den Tabellennamen habe ich jetzt rausgefunden:

              Code:
              select column_name, data_type, data_length 
                from user_tab_cols 
               where table_name='Dein_Tabellenname' 
              order by column_id;
              Aber ich befürchte gleich kommt eine Frage in Javabereich

              Comment


              • #8
                So wie angedroht

                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");
                				System.out.println(perso);
                			}
                
                			while (rs.next()) {
                				String perso = rs.getString("PERSONID");
                				String person = rs.getString("NAME");
                				String personI = rs.getString("VORNAME");
                				String personID = rs.getString("GEBURTSTAG");
                				System.out.println(perso);
                				System.out.println(person);
                				System.out.println(personI);
                				System.out.println(personID);
                
                			}
                
                			// 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.");
                			}
                		}
                	}
                In der erste While schleife gibt er mir das richtige jetzt aus, aber in der zweiten whileschleife gibt er mir nichts mehr aus. Das nächste ist wie bekomm ich die Werte aus der ersten While schleife in die rs.getString() rein.

                Comment


                • #9
                  So wie angedroht
                  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
                  Christian

                  Comment

                  Working...
                  X