# DropDownBoxen mit MySQL Daten füllen



## MichaelKorlach (28. Jun 2011)

hallo Leute,

ich möchte gerne DropDownBoxen mit Inhalten aus meiner Datenbank füllen. Ich habe eine DropDownBox und in die würde ich gerne den Vor- und Nachnamen als ein Name hineingeben.

Leider habe ich von Datenbankprogrammierung mit Java sowenig Ahnung wie keine Ahnung... Ich freue mich schon, dass ich es hinkriege meine DB mithilfe von Java zu connecten.

Ich wäre euch also sehr dankbar, wenn ihr mir helfen könntet.

So sieht momentan meine jsp Datei aus:


```
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<select>
<%@ page import="conne.Connector" %>
  <option>
  <%  
     out.print("" + Connector.VornamensAusgabe());
  %>
  </option>
</select>
</body>
</html>
```
Dies gibt mir natürlich alle Vornamen in einer Reihe hintereinander in einer Option wieder. Das will ich ja nicht, ich möchte gerne alle schön untereinander, am besten noch mit dem Nachnamen.

Hier noch meine Java-Klasse:

```
package conne;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Connector {

	public static Connection conn = null;
	public static Statement stmt = null;
	public static ResultSet rs = null;
	public static String username = "jspmyadmin";
	public static String password = "jspmyadmin";
	public static String url = "jdbc:mysql://" + "localhost" + "/" + "Teaming";
	final static String lineSeparator = System.getProperty("line.separator");

	public static void main(String[] args) {

	}

	public static String VornamensAusgabe() {
		String zu = lineSeparator;

		StringBuilder str = new StringBuilder();
		try {
			conn = DriverManager.getConnection("jdbc:mysql://10.115.100.60:3306/sitescape",
					"jspmyadmin","bochum");
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}
		try {
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT Vorname FROM Person;");
			while (rs.next()) {

				str.append(rs.getString(1));
				str.append(zu);

			}
			rs.close();
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}

		return str.toString();
	}

	public static String NachnamensAusgabe() {
		String zu = lineSeparator;

		StringBuilder str = new StringBuilder();
		try {
			conn = DriverManager.getConnection(
					"jdbc:mysql://10.115.100.60:3306/sitescape",
						"jspmyadmin","bochum");
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}
		try {
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT Nachname FROM Person;");
			while (rs.next()) {

				str.append(rs.getString(1));
				str.append(zu);

			}
			rs.close();
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}

		return str.toString();
	}

	public static String OrganisationsAusgabe() {
		String zu = lineSeparator;

		StringBuilder str = new StringBuilder();
		try {
			conn = DriverManager.getConnection(
					"jdbc:mysql://10.115.100.60:3306/sitescape",
					"jspmyadmin","bochum");
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}
		try {
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT Firmenname FROM Organisation;");
			while (rs.next()) {

				str.append(rs.getString(1));
				str.append(zu);

			}
			rs.close();
		} catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}

		return str.toString();
	}
}
```

Ich hoffe ihr könnt mir helfen.

Zur weiteren info:

Ich benutze zur Programmierung Eclipse.
Das ganze läuft auf einem Apache Tomcat Server und die Datenbank is eine MySQL Datenbank.

MfG Michael K.


----------



## bERt0r (29. Jun 2011)

Ich schätze mal dein erzeugter HTML code sieht so aus

```
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<select>
<option>
Herbert
Fritz
Max
Ingeborg
  </option>
</select>
</body>
```
Um das ganze aber in eine Dropbox zu packen, muss es so aussehen:

```
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<select>
  <option>
Herbert
  </option>
  <option>
Fritz
  </option>
  <option>
Max
  </option>
  <option>
Ingeborg
  </option>
</select>
</body>
```

Das heißt, jeden namen in eine Option packen. Dafür solltest du wohl am besten einen Vector<String> aus deine Funktion zurückgeben und den per JSP durchiterieren.


----------



## MichaelKorlach (30. Jun 2011)

Danke für die Antwort, ich habs jetzt endlich geschafft =).

Nun stehe ich aber vor einem weiteren Problem^^.

Ich möchte nun per Klick auf einen Button, die Daten die zufor in Textfeldern eingegeben wurden in die Datenbank speichern.

Klingt ja zuerst einfach, aber wir arbeiten mit "Novell VibeOnPrem 3" und da versteh ich das nicht so recht wie dass da gehen soll. 

ich habe die methode:

[Java]
public static void Personeingabe(){
		connect();
		try{
			Statement stmt = conn.createStatement();
			stmt.executeUpdate("insert into Person Values('test','doof','12','34','5'," +
			           		"'6','7','8');");

			        /*stmt.executeUpdate("insert into Person values(" + "vorname" + "," +
					"title" + "," + "straße" + "," + "plz" + "," + "ort" + "," + "telenr" + 
					"," + "Faxnr" + "," + "email" + ");");*/
		}
		catch (SQLException sqle) {
			System.out.println("SQLException: " + sqle.getMessage());
			System.out.println("SQLState: " + sqle.getSQLState());
			System.out.println("VendorError: " + sqle.getErrorCode());
			sqle.printStackTrace(); // DiagnoseAusgabe im Fehlerfall
		}
	}
[/code]

Diese methode gebe ich einfach bei der "OnKlick" funktion des Buttons an. Auf lokaler ebene auf meinem SQL Server funktioniert das, nur auf dem Tomcat server des Novell Vibe irgendwie nicht. Hat jmd in der Beziehung schon Erfahrung gesammelt? Der Developers Guide von Novell ist auch nicht grad leicht verständlich :S.

Vielen Dank schonmal.


----------



## bERt0r (2. Jul 2011)

Mit Novell Vibe kann ich dir leider nicht weiterhelfen, aber blöde Frage: schon mal ohne den ";" am Schluss probiert? Ansonsten wäre wohl eine Fehlermeldung hilfreich, irgendwie nicht ist nicht sehr konkret...


----------

