# von anfang an



## espanol (6. Jun 2004)

hola erstmal,
hab ein dickes problem, mus ein java proc schreiben das auf eine datenbank zugreift, kenn mich mit sql, c, c++,
mit java schon en bissel, aber finde kein vernünftiges tutorial.
würde mich um hilfe freuen,da dafür es auch foren gibt um sich gegenseitig zu helfen.
also datenbank ms access 

import java.sql.*; //ist also nötig

Unter Windows sehr einfach: Richte einfach unter Start > Einstellungen > Systemsteuerung > Verwaltung > Datenquellen (ODBC) einen DSN zu der Access-Datenbank ein. Und dann kannst Du einfach per JDBC-ODBC-Bridge darauf zugreifen. 
im forum gefunden und auch auf einer anderen site

wie gehts konkret weiter, würde mich freuen wenn ihr nicht direkt auf google verweist und mir schritt für schritt helfen könntet,
wäre dann so was wie ein kleiner forum tutorial  :wink: 
also hilfe!!!


----------



## nollario (7. Jun 2004)

dazu gibt es schon etwas in diesem forum:

http://www.java-forum.org/de/viewtopic.php?t=1529 die faqs!



aber, da es sich um eine mysql db handelt: hier nochmal der unterschied... du benötigst einen anderen treiber:


```
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
```

und eine andere url:


```
jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]*
```

und das java tutorial hat einen gut erklärten jdbc teil:

http://java.sun.com/docs/books/tutorial/


----------



## Guest (7. Jun 2004)

vielen dank schonmal für die hilfe

muss die datenbank nicht zum schluß wieder eschlossen werden?
die bei dateienzugriff?

grüße


----------



## nollario (7. Jun 2004)

ja, am besten auch das statement und etwaige resultsets... die method heisst gleich:


```
close();
```


----------



## Guest (7. Jun 2004)

public void setKunden(String vorn, 
				 String nachn, 
				 String str, 
				 int hausnr, 
				  int plz, 
				  String ort)throws SQLException{
		getConnection();
		if(con==null)
			getConnection();
		Statement stmt = con.createStatement();
		int knr=kundennr();
		knr++;
		stmt.executeUpdate(
			"INSERT INTO Mensch (Name,Vorname,Strasse,Hausnummer,PLZ,Ort,Kundennummer) " + 
			"VALUES ("+nachn+","+vorn+","+str+","+hausnr+","+plz+","+ort+","+knr+");");

		close();
	}

kann mir jemand sagen wo der fehler steckt???
kann ich keine int mit executeupdate übergebn?????????


----------



## nollario (7. Jun 2004)

was ist denn die fehlermeldung?


----------



## Guest (7. Jun 2004)

[Microsoft][ODBC Microsoft Access Driver] 5 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
versteh die fehlermeldung nicht


----------



## nollario (8. Jun 2004)

Anonymous hat gesagt.:
			
		

> public void setKunden(String vorn,
> String nachn,
> String str,
> int hausnr,
> ...



versuchs mal mit:


```
...VALUES('" + nachn + "', '" + vorn + '", ...
```

-> alle String Werte mit Hochkommata umgeben, aber NICHT die Zahlenwerte!


----------



## Guest (8. Jun 2004)

hi vielen vielen dank
hab aber jetzt ein kleines anderes prob
will meine datenbank abfragen und mehrere elemente mit dem anfangsbuchstaben z.b. m abfragen klappt aber nit immer nur ein element 

	public void getkunden(String such){
		getConnection();
		try{
			String query;

			if(such.equals("*")){
				query = "SELECT * FROM Mensch;";
			}
			else{		
				query = "SELECT * FROM Mensch WHERE Name like '*"+such+"*';";
			}

			Statement stmt = con.createStatement();
			ResultSet tabelle = stmt.executeQuery(query);

			String name,vname,str,ort;
			int hnr,plz,knr;			  
			while (tabelle.next()) {
			name = tabelle.getString("Name");
			vname = tabelle.getString("Vorname");
			str = tabelle.getString("Strasse");
			hnr = tabelle.getInt("Hausnummer");
			plz = tabelle.getInt("PLZ");
			ort = tabelle.getString("Ort");
			knr = tabelle.getInt("Kundennummer");

			System.out.println(" | "+name+" | "+vname+" | "+str+" | "
								+hnr+" | "+plz+" | "+ort+" | "+knr+" | ");
			}
			con.close();
		}
		catch(SQLException e){
					System.out.println(e.getMessage());
		}
		catch(Exception e){
			 System.err.println(e);
		}
	}


----------



## Guest (8. Jun 2004)

wäre echt super freundlich wenn ihr mir weiter so tolle tips geben könnt


----------



## KSG9|sebastian (8. Jun 2004)

sql != windows, d.h.

wenn du nach einträgen suchst die mit einem 'x' beginnen sieht die sql so aus:


```
String sql = "SELECT * FROM tabelle WHERE feld LIKE 'x%'";

//In deinem Fall:

String sql = "SELECT * FROM tabelle WHERE feld LIKE '"+such+"%'";
```

% - steht für 0 - unendlich viele Zeichen
? - steht für ein beliebiges Zeichen, inklusive ' ' (leer)

Wichtig is noch folgendes: Bei Varchar, Textfelder ist es wichtig, dass du die Parameter mit den Hochkommas übergibst


```
...,' "+wert+ " '
```


----------



## nollario (9. Jun 2004)

und den ganzen spass nennt man wildcards: also * unter windows bzw. % unter sql... und für sql wildcards gibts hier eine kleine zusammenfassung:

http://www.tigr.org/help_pages/sql/sql_wildcards_help.html


----------

