# Datenbank und JSF



## frooogi (30. Apr 2006)

hallo,

arbeite mich gerade neu in das Thema JSF ein, leider finde ich keine ausreichende Tutorials auf deutsch.

Nun ich habe ein EigabeFromular, und einen Button. Nun möchte ich den Namen den ich in das Formular eingebe in der Datebank abspeichern.


ich hab folgendes hinbekommen, die Datenbank wird geöffnet, aber der Wert wird nicht eingetragen, weil ich auch nicht weiß wie??

ich weiss auch nicht wie ich den Button genau verarbeiten kann..  also wenn ich send drücke dann soll er den namen in die DB speichern.

... kann ich nicht einfach die Methoden aufrufen?  wie??





```
<table id="posFormular" align="center">
      <tr>
           <td> Name Vorname  : </td>
           <td><h:inputText value="#{testBean.name}"/></td> 
      </tr>
</table>


<h:commandLink id="SendButton"  action="sendButton">
                <h:outputText value="Senden"/>
</h:commandLink>
```

und die testBean sieht folgendermaßen aus:




```
public class TestBean {

	Connection conn;
	Statement st;
	ResultSet rs;
	String name;

	public TestBean() {

		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			this.conn = DriverManager.getConnection("jdbc:odbc:db1");
			System.out.println("DB connection erfolgreich");

		} catch (Exception e) {
			System.out.println("Fehler beim DB aufbau");
		}

	}

	
	public void neuenDatensatzAnlegen(String name)
			throws Exception {

		this.name = name;

		try {
			st = conn.createStatement();
			st.execute("INSERT INTO student(name)" + " VALUES" + "('" + name+ "');");
		} catch (SQLException e) {
			System.out.println(" Fehler beim anlegen des Datensatzes");

			e.getMessage();
			e.getNextException();
			e.printStackTrace();
			e.getErrorCode();
			e.getStackTrace();
			st.close();
			conn.close();
		}

	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
```


danke


----------



## Gast (9. Mai 2006)

Ganz einfach:


```
...action="sendbutton"...
```

Da wird keine Methode aufgerufen. Es müsste wenn dann heißen


```
...action="#{sendbutton}"...
```

Wobei ich nicht weiß, wie dein sendbutton() aussieht .


----------



## Gumble (9. Mai 2006)

ergaenze zu deinem TestBean die Methode 'String neuenDatensatzAnlegen()' (ohne Uebergabeparameter, mit Rueckgabeparameter Typ String)

die kannst Du in per action aufrufen: ..action="#{testBean.neuenDatensatzAnlegen}"

in deiner faces-config.xml kannst du dann Anhand der Navigationsrule planen wie es weitergeht, z.B <from-outcome>success</from-outcome> -> d.h. die Methode muss dann den String "success" zurueckgeben. (ggf. Fehlerbehandlung..)

Wenn Du nicht weiter navigieren moechtest, kannst Du alternativ einen Listener an Deinem Button haengen ...actionListener="#{testBean.myAction}" Die Methode muss aber dann folgende Signatur haben: public void myAction(ActionEvent actionEvent)


----------

