Java 10

advertisement
JAVA – JSP
Bazy Danych
MySQL, JDBC, Select, Insert, Update,Delete
181
JDBC
•
•
•
•
•
•
Narzędzia
Połączenie z bazą danych
Select
Insert
Update
Delete
182
Narzędzia
• XAMP => MySql + PhpAdmin
– http://www.apachefriends.org/en/xampp.html
– http://www.apachefriends.org/en/xamppwindows.html#641
183
MySql JDBC Driver
• http://www.mysql.com/products/connector/
• http://dev.mysql.com/downloads/connector/j
184
Dodanie biblioteki do projektu
185
Ustawienie classpath dla serwera
186
Import class
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
187
Obiekty do obsługi operacji
JDBC
private java.sql.Connection connect = null;
private Statement statement = null;
private PreparedStatement preparedStatement = null;
private ResultSet resultSet = null;
188
Połączenie z bazą danych
protected void LoadDataBase() {
Baza danych użytkownik
try {
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/java_test", "root","");
hasło
statement = connect.createStatement();
// resultSet zawiera wynik zapytania0 SQL
resultSet = statement .executeQuery("select * from java_test.osoba_test ");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
Brak klasy
sterownika
Błąd w
zapytaniu
}
189
Pobranie listy osób
public List<Osoba> GetOsobyFromJDBCDataBase(){
LoadDataBase();
List<Osoba> result = new ArrayList<Osoba>();
try {
while (resultSet.next()) {
String id = resultSet.getString("id"); // można podawać nr kolumny
String imie = resultSet.getString("imie");
String nazwisko = resultSet.getString("nazwisko");
result.add(new Osoba(Integer.parseInt(id), imie, nazwisko) );
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
190
Pobranie rekordu i umieszczenie
w obiekcie (PreparedStatement)
public Osoba GetOsoba(int id){
Osoba result = new Osoba();
try {
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager .getConnection("jdbc:mysql://localhost:3306/java_test" , "root","");
preparedStatement = connect
.prepareStatement("select * from java_test.osoba_test where id = ?");
Zapytanie
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
resultSet.next();
result.setId( resultSet.getInt("id") );
result.setImie(resultSet.getString("imie"));
result.setNazwisko(resultSet.getString("nazwisko"));
} catch (…..) { ….}
return result;
}
Ustawienie
parametrów
zapytania
Wykonanie
operacji
Wpisanie do
obiektu
191
Insert
public void InsertOsoba(String imie, String nazwisko){
Zapytanie
try {
preparedStatement = connect
.prepareStatement("insert into java_test.osoba_test (id, imie, nazwisko) values (default, ?, ?)");
preparedStatement.setString(1, imie);
preparedStatement.setString(2, nazwisko);
//preparedStatement.setDate(4, new java.sql.Date(2009, 12, 11));
// preparedStatement.setInt ( …);
Ustawienie
parametrów
zapytania
Inn typy
obiektów jako
parametry
zapytania
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
Wykonanie
operacji
192
}
Insert - Servelet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
Osoby o = new Osoby();
o.LoadDataBase();
String imie = request.getParameter("Imie");
String nazwisko= request.getParameter("Nazwisko");
o.InsertOsoba(imie, nazwisko);
}
193
Edycja - update
public void UpdateOsoba(int id, String imie, String nazwisko){
try {
preparedStatement = connect
.prepareStatement("UPDATE java_test.osoba_test SET imie = ?, nazwisko= ? WHERE id= ?");
preparedStatement.setString(1, imie);
preparedStatement.setString(2, nazwisko);
preparedStatement.setInt(3, id);
preparedStatement.executeUpdate();
} catch (SQLException e) {
}
}
194
Edycja – strona JSP
<%
pf.fdwp.Osoba osobaInp;
pf.fdwp.Osoby ososby= new pf.fdwp.Osoby();
pf.fdwp.Osoba o= ososby.GetOsoba(Integer.parseInt(
request.getParameter("id") ));
Wyciągniecie danych
osobaInp = o;
na podstawie danych
%>
przesłanych w
requescie
<form action="EditOsoba" method="post">
Id:
<input name="Id" type="text" value='<%= osobaInp.getId() %>' />
Imie:
<input name="Imie" type="text" value='<%= osobaInp.getImie() %>'/>
Nazwisko:
<input name="Nazwisko" type="text" value='<%=
osobaInp.getNazwisko() %>'/>
Wypełnienie
formularza
<button type="submit" >Apply</button>
</form>
195
Przejście do formularza z edycją
<table border="2">
<thead>
<tr><td> Id</td><td> Imie </td><td> Nazwisko</td></tr></thead>
<tbody>
<% for(Osoba o: osoby.GetOsobyFromJDBCDataBase())
{ %>
<tr> <td><%= o.getId() %> </td> <td><%=o.getImie() %> </td> <td><%= o.getNazwisko() %>
</td>
<td>
<a href="OsobaEdit.jsp?id=<%= o.getId() %>"> Edit</a>
</td>
</tr>
<% } %>
</tbody>
</table>
Generowanie
linka do
formularza z
edycją
196
Kasowanie - Delete
public void DeleteOsoba(int id){
try {
preparedStatement = connect
.prepareStatement("delete from java_test.osoba_test where id= ? ; ");
preparedStatement.setInt(1, id);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
197
Download