# Suchfunktion



## tk80 (6. Aug 2007)

hallo,

bin noch ein java-anfänger und muss eine suchfunktion(=suchbutton) implemntieren
wie suche ich zb. nach einer person, angenommen ich habe 2 felder vorname und nachname

habe so angefangen:


```
public JButton getButtonSuchen()
          { 
                if(buttonSuchen == null)
                {
                        buttonSuchen = new JButton(getButtonSucheAction());
                }
          }



            private Action getButtonSuchenAction()
            {
                     if(buttonSuchenAction == null)
                     {
                            
                             buttonSuchenAction = new AbstractAction("Suchen", getIconSuchen());
                                { 
                                      public void ActionPerformed(ActionEvenet ae)
                                }
                      };
            }
```


und wie mach man die suche???


----------



## The_S (6. Aug 2007)

Kommt darauf an wo du suchen möchtest


----------



## tk80 (6. Aug 2007)

ich habe vershiedene felder in denen ich suchen kann, wie mache ich dass zb, wenn ich nach einem nachnamen suche und alle daten, die zu diesem nachnamen gehören, anzeigen möchte (wie zb telefon, geburtstag usw...eine datenbank klasse für diese tabelle mit spalten vorname, nachname, geburtstag, strasse, ort, plz habe ich)


----------



## The_S (6. Aug 2007)

beantworte meine Frage. Wo soll gesucht werden? Im Dateisystem nach Dateinamen, Dateien durchsuchen, in einer Datenbank suchen, im Internet suchen, in z. B. einer JTextArea suchen, ...


----------



## tk80 (6. Aug 2007)

in einer Datenbank soll gesucht werden, sorry, habe die frage falsch verstanden


----------



## The_S (6. Aug 2007)

1.) Verbindung zur Datenbank über JDBC-Treiber herstellen
2.) Select-Statement zusammenbauen (SELECT spalte1, spalte2, spalte3 FROM tabelle WHERE vorname='peter' AND nachname='mueller')
3.) Über ein ResultSet die Ergebnisse auswerten.


----------



## tk80 (6. Aug 2007)

hmm, noch eine blöde frage, wie stelle ich verbindung zur db her?


----------



## The_S (6. Aug 2007)

Welche DB verwendest du denn?


----------



## tK8 (6. Aug 2007)

sql


----------



## LordTerra (6. Aug 2007)

my sql?
oracle sql?
ms sql?

also n bissel genauer


----------



## Guest (6. Aug 2007)

my sql


----------



## The_S (6. Aug 2007)

Dann verwende mal die Suchfunktion bzw. schau dir das entsprechende Kapitel auf www.galileocomputing.de in der Java-Insel an. Ausführlicher kann mans nicht erklären!


----------



## LordTerra (6. Aug 2007)

```
public static Connection cn = null;
	public static Statement  st = null;
	public static ResultSet  rs = null;

                //DB-Connect
	public static ResultSet connect_select(String db_string) {
		try {
			// TODO Auto-generated method stub
			String sUsr="root";     //loginname
			String sPwd="*****";    //passwort
			String sIP="127.0.0.1"; //localhost
			String sPort="3306";    //standartport
			String sDB="avs";       //datenbank
				
			Class.forName( "com.mysql.jdbc.Driver" );
			cn = DriverManager.getConnection( "jdbc:mysql://"+sIP+":"+sPort+"/"+sDB ,sUsr ,sPwd );
			st = cn.createStatement();
	        rs = st.executeQuery( db_string );
		} catch( Exception ex ) {
			System.out.println( "1: "+ex );
	    }
		return rs;
	}



                //Select-Anweisung
	public static boolean login(String name, String passwort){
		cn = null;
		st = null;
		rs = null;
		try {
			String db_string="select * from user where user_name='"+name+"' and user_passwort='"+passwort+"'";
			rs = connect_select( db_string );
			if(rs.absolute(1)){
				return true;
			}else{
				return false;
			}
		} catch( Exception ex ) {
			System.out.println( "4: "+ex );
	    } finally {
	    	try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
	    	try { if( null != st ) st.close(); } catch( Exception ex ) {}
	    	try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
	    }
		return false;
	}
```


so sieht das ungefähr aus du musst aber vorher noch den db treiber aus dem inet runter laden und bei dir in das java startverzeichnis packen 

z.b. : mysql-connector-java-5.0.7-bin.jar ins verzeichnis: C:\Programme\Java\jre1.6.0_01\lib\ext


----------



## The_S (6. Aug 2007)

LordTerra hat gesagt.:
			
		

> und bei dir in das java startverzeichnis packen
> 
> z.b. : mysql-connector-java-5.0.7-bin.jar ins verzeichnis: C:\Programme\Java\jre1.6.0_01\lib\ext



woh, wer hat dir denn den Schwachsinn erzählt? Sowas wird in den Classpath eingebunden und nicht irgendwo hinkopiert!


----------



## LordTerra (6. Aug 2007)

oh ein besserwisser... 
also sorry ob ich nu ne datei irgendwohin kopierte 
oder den pfad anpasse... 

was geht wohl schneller? naaa.... richtig das hin und her kopiere ...


----------



## Wildcard (6. Aug 2007)

LordTerra hat gesagt.:
			
		

> was geht wohl schneller? naaa.... richtig das hin und her kopiere ...


Wie reinigt man sein Auto schneller?
Mit einem Schwamm oder einem Sandstrahler?
Merke:
Schneller != besser


----------



## The_S (6. Aug 2007)

@tk8

Wenn du alles schnell, schlampig und unordentlich machen möchtest und zudem anderen Leuten zumuten möchtest, dass sie einfach mal ne Datei in ein anderes (nicht statisches) Verzeichnis zu kopieren, dann machs so wie LordTerra.

Wenn du es aber richtig und ordentlich machen möchtest, dann pass einmal deinen Classpath/Path in deiner IDE/Umgebungsvariablen an und verweise beim Deployement in deiner Manifest-Datei auf den mitgelieferten Datenbanktreiber. So muss der spätere Enduser auch nicht irgendwelche Dateien irgendwo kreuz und quer hin kopieren, sondern hat einfach dein Programm, startet das, und gut ist - so wies halt auch sein soll!


----------



## LordTerra (6. Aug 2007)

Hobbit_Im_Blutrausch wenn du mich net so komisch von der seite angemacht hättest hätt ich dir natürlich zugestimmt ... aber wie immer... der ton macht die musik...


----------



## The_S (6. Aug 2007)

Als "dumm von der Seite angemacht" hab ich das zwar nicht empfunden ... aber ok. Aber warum tätigst du (deiner Aussage nach) absichtlich Falschaussagen, nur weil dir jemand aufn Schlipps getreten ist? Irgendwie äußerst merkwürdiges Verhalten ...

Zum Einen verunsicherst du den Fragestellter bzw. erklärst im Falsches als Tatsache und zum Anderen erzählst du Dinge, von denen du (scheinbar) sowieso weißt, dass sie früher oder später als falsch entlarvt werden. Mal ganz davon abgesehen, dass du durch solche Aktionen deine Glaubwürdigkeit grundsätzlich in Frage stellst und dich als Egoist outest (bevor du einen Fehler zugibst und einem Anfänger den richtigen Weg zeigst, beharrst du aus Sturheit auf deiner "falschen Wahrheit").

Ich könnte dich jetzt noch seitenweiße mit Argumenten zubombadieren, hab dazu aber eigentlich keine Lust. Ich schlage vor (um deine Glaubwürdigkeit wiederherzustellen), dass du einfach zugibst es nicht besser gewusst zu haben. Ist ja nichts dabei etwas nicht zu wissen! Und auf jedenfall sinnvoller als hier durch die Gegen zu trotzen  .


----------



## LordTerra (6. Aug 2007)

also ganz so is es net... 

ich weis von dem weg des pfad eintragens ... 
aber der schnellere is halt einfach das jar file in den entsprechenden ordner zu kopieren... 
ich seh das mit dem reinkopieren net so als schlimm an und noch dazu wird es auf diversen seiten auch so beschrieben ... 

"nimm die datei entpack sie kopier sie in nen ordner der schon im pfad steht oder trag den pfad neu ein..."

so wird es meistens beschrieben... 
kann dir auch wenn du magst genug google beispiele liefern... 
und hey ob ich nun schon nen vorhanden pfad benutze oder einen anleg der aber auch nur local auf meinem rechner funktioniert ... wo is da der unterschied?


----------



## Wildcard (6. Aug 2007)

LordTerra hat gesagt.:
			
		

> und hey ob ich nun schon nen vorhanden pfad benutze oder einen anleg der aber auch nur local auf meinem rechner funktioniert ... wo is da der unterschied?


Der Unterschied ist, dass du Pfade relativ anlegst und die Anwendung damit portabel ist.
Wenn du eine lib in ext kopierst, müsstest du das jedoch auch beim Anwender machen und in einem sinnvoll konfigurierten System hast du dazu gar nicht die benötigten Rechte.


----------



## LordTerra (6. Aug 2007)

hmmm dachte eigentlich bisher das der beim erstellen einer jar die benötigten funktionen usw mit in seine integriert... 

also hab ewig kein java mehr geproggt und bin erst letztens wieder zu gekommen aber früher konnte man doch im jbuilder usw sagen hier bastel die dateien zusammen und pack in das jarfile auch die eingebundenen jars... 

und aus dem grund sah ich das auch letztens als ich mit den sql zugang gebastelt hab nicht als schlimm an wenn ich die datei mit reinkopier... ich ging davon aus naja wenn ich das jar file zusammen bastel wird das jar auch mit dazu gepackt


----------



## Wildcard (6. Aug 2007)

jar in jar schafft der Classloader nicht. Jars müssen erst entpackt werden und dann zusammen in ein jar gepackt werden.
Für große Projekte ist das kein praktikabler Weg.


----------



## The_S (6. Aug 2007)

LordTerra hat gesagt.:
			
		

> aber der schnellere is halt einfach das jar file in den entsprechenden ordner zu kopieren...



Siehe Beispiel Wildcard



			
				LordTerra hat gesagt.:
			
		

> und noch dazu wird es auf diversen seiten auch so beschrieben ...



Du gehörst also auch zu den Menschen wo sagen: "Huihuihui, schnell in den Atombunker! Die BILD-Zeitung hat geschrieben, dass Hitler geklont wird!". Man soll halt nicht immer alles glauben oder für optimal befinden, was einem irgendwo erzählt wird  .



			
				LordTerra hat gesagt.:
			
		

> kann dir auch wenn du magst genug google beispiele liefern...



Das glaub ich schon, dass das auf einigen Seiten so steht. Aber siehe oben, nicht alles was mal irgendwer irgendwo geschrieben hat ist automatisch Tatsache!



			
				LordTerra hat gesagt.:
			
		

> und hey ob ich nun schon nen vorhanden pfad benutze oder einen anleg der aber auch nur local auf meinem rechner funktioniert ... wo is da der unterschied?



Der Unterschied ist der, dass du zum Einen in fremden Programmordnern dir zu schaffen machst, was in ungünstigen Fällen zum Absturz des betreffenden Programms oder zur Überschreibung der Datei führen kann. Bei der Installation einer anderen JRE kann es zum Beispiel dann auch dazu kommen, dass die Lib nicht mehr gefunden wird und du dich wunderst warum. Oder deine bezahlte Lib wird ausversehen bei der Deinstallation mitsamt Lizenz gelöscht. Nicht gerade schön oder?

Und zum Anderen willst du das Programm ja auch meistens verkaufen/verschenken/... Ich wette mit dir, dass 50% minimum der User dein Programm sofort nach dem Download wieder löschen, wenn sie sehen, dass Sie eine bestimmte Datei in ein Verzeichnis kopieren müssen. Weil ...

1.) Einige User schlichtweg nicht wissen, wie sie vorgehen müssen
2.) Das Verzeichnis je nach Installationsort und JRE-Version unterschiedlich heißt
3.) Der Verdacht geweckt werden könnte, es handle sich um ein Virus (wo muss man sonst noch Dateien in fremde Ordner zur Installation kopieren?)
4.) Einige User auch schlichtweg zu faul sein dürften
5.) keine Berechtigungen vorhanden sind

[edit] da war wohl wer schneller ...


----------



## LordTerra (6. Aug 2007)

> Du gehörst also auch zu den Menschen wo sagen: "Huihuihui, schnell in den Atombunker! Die BILD-Zeitung hat geschrieben, dass Hitler geklont wird!". Man soll halt nicht immer alles glauben oder für optimal befinden, was einem irgendwo erzählt wird  .


@Hobbit_Im_Blutrausch : ignore... is mir einfach zu doof... wenn du dich net normal unterhalten kannst ohne gleich wen zu beleidigen lass es

@Wildcard: thx für info... jo kann sein das das dann n bissel groß wird..[/quote]


----------



## The_S (6. Aug 2007)

ok, dann werd ich dich halt nicht mehr auf deine Falschaussagen/Fehler aufmerksam machen. Aber das muss noch raus:

Ich mag Leute, die die Klappe aufreisen (und keine Smileys verstehen), aber sich selbst mit jedem Post dämlicher dastehen lassen (das hat rein gar nichts mit der größe des Jars zu tun :roll: ).

und tschö!


----------

