Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

S javou do databáze (1)

Rád bych navázal na předchozí články "S javou na webovém serveru" a doplnil je o připojování do databáze MySQL, ale neměl by být problém použít kteroukoli jinou z jsp pomocí jdbc. Také se podíváme na opensource DbBeans.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Co potřebujeme za software

  • Tomcat nebo jiný servlet container – viz články S javou na webovém serveru.
  • Databázi – my budeme používat opensource MySQL, která běží jak na linuxu, tak i na windows.
  • JDBC ovladač k databázi – pro MySQL se nachází tady. Pokud hledáte ovladač pro jinou databázi, podívejte se na java.sun.com.

Co byste už měli umět

  • JSP – viz články S javou na webovém serveru. Je ale jasné, že se zatím pouze učíte, žádný strach, jste cílové obecenstvo.
  • SQL – stačí základní příkazy.

Ukázkový program

Naše aplikace bude úplně jednoduchá a bude pouze generovat seznam zaměstnanců z databáze, což není vůbec originální, ale pro naše účely to postačuje.

Takhle vypadá naše tabulka v databázi:

Tabulka č. 181
id firstname lastname email
0 Jan Novák jan.novak@firma.cz
1 Aleš Borůvka ales.boruvka@firma.cz
2 Petr Mladý petr.mlady@firma.cz
3 Peter Palfy peter.palfy@spolupracovnik.sk

SQL kód pro vytvoření tabulky a naplnění daty je tady.

Ještě ale musíte nainstalovat váš jdbc driver do tomcatu. Překopírujte jar do adresáře TOMCAT_HOME/lib. Dále byste do tohoto adresáře měli nakopírovat také soubor dbbeans.jar, který rozbalíte z dbbeans.zip.

Připojení pomocí čisté java.sql
Část, která se připojuje k databázi a generuje stránku:

<%
/* Natáhneme driver do paměti.
Volat newInstance() se sice oficiálne nemusí,
ale vyřeší to rozdíly mezi jvm.
*/
Class.forName("org.gjt.mm.mysql.Driver").newInstance();

/* Získáme připojení k databázi.
getConnection(URL, uživatel, heslo);

URL:
jdbc:mysql - protokol
localhost - server
test - databáze
useUnicode - mm.mysql jdbc driver základně nepoužívá
unicode, což se nám nehodí, musíme ho zapnout.
characterEncoding - kódování dat(windowsáci použijte windows-1250)
*/
Connection conn = DriverManager.getConnection("jdbc:mysql://
localhost/test?useUnicode=true&characterEncoding=iso-8859-2",
"user", "password");

/* Statement je objekt, který nám umožňuje odesílat sql
příkaz na server a získávat odpoveď. */
Statement stmt = conn.createStatement();

/* Odeslání SELECT příkazu na server, vrací ResultSet,
což je vlastně speciální tabulka dat. Pokud je sql příkaz
UPDATE, INSERT nebo DELETE, použijte metodu executeUpdate,
vrací int. Metoda execute se dá použít pro obojí. */
ResultSet rs = stmt.executeQuery("SELECT * FROM employee
ORDER BY id");

/* Generování tabulky */
while(rs.next()) { %>
<tr><td><%= rs.getString(0) %></td><td><%=
rs.getString(1) %></td>
<td><%= rs.getString(2) %></td><td><%=
rs.getString(3) %></td></tr><%="\n"%>
<% }

/* Uzavřeme všechny objekty, které jsme vytvořili. */
rs.close();
stmt.close();
conn.close();
%>

Celá jsp stránka je k dispozici zde.

Připojení pomocí ConnBean
ConnBean je součástí opensource projektu DbBeans a snaží o dvě věci:

1) Zjednodušit práci s objektem Connection. Protože je ConnBean javabean (nezávislý program), zvyšuje přehlednost jsp stránek a je přenositelný (dá se použít v mnoha projektech bez úprav).

2) Šetřit váš server před neustálým připojováním. ConnBean pracuje na myšlence jedno připojení jednoho k databázi na jednoho návštěvníka stránek. Připojení pracuje po celou dobu session (než se zavolá invalidate()), nebo až do doby kdy zavřete Connection (pokud například návštěvník opustí dynamicky generovanou oblast).

Část, která se připojuje k databázi a generuje stránku:

davame_internetu_obsah
       
<jsp:useBean id="cbean" class="patrny.sql.ConnBean"
scope="session">
    <jsp:setProperty name="cbean" property="driver"
    value="org.gjt.mm.mysql.Driver"/>
    <jsp:setProperty name="cbean" property="URL"
    value="jdbc:mysql://localhost/employee?useUnicode=
    true&characterEncoding=iso-8859-2"/>
    <jsp:setProperty name="cbean" property="user"
    value="user"/>
    <jsp:setProperty name="cbean" property="password"
    value="password"/>
</jsp:useBean>
<%
/* Statement je objekt, který nám umožňuje odesílat sql
příkaz na server a získávat odpověď. */
Statement stmt = cbean.getConnection().createStatement();

/* Odeslání SELECT příkazu na server, vrací ResultSet což
je vlastně tabulka dat. Pokud je sql příkaz UPDATE, INSERT
nebo DELETE, použijte metodu executeUpdate, vrací int.
Metoda execute se dá použít pro obojí. */
ResultSet rs = stmt.executeQuery("SELECT * FROM employee
ORDER BY id");

/* Generování tabulky */
while(rs.next()) { %>
<tr><td><%= rs.getString(0) %></td><td><%=
rs.getString(1) %></td>
<td><%= rs.getString(2) %></td><td><%=
rs.getString(3) %></td></tr><%="\n"%>
<% }

/* Uzavřeme všechny objekty, které jsme vytvořili.
Ale neuzavíráme Connection, protože se zavře samo, až
vyprší platnost session. */
rs.close();
stmt.close();
%>

Celá jsp stránka je k dispozici zde.

Příště
Příště se podíváme na ConnCacheBean, která doplňuje ConnBean o povolování připojení k databázi, a na DbBean, která usnadňuje práci s generováním dat.

Školení: Linux – Zálohování, Vysoká dostupnost, SNMP dohled

Na třídenním školení se naučíte nainstalovat a spravovat systém zálohování, replikace dat a vysoké dostupnosti dat. Dále také pracovat s RAID a LVM poli a nainstalovat a spravovat si vlastní dohledový systém.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,89

Přehled názorů

JDBC
Jonas 24. 8. 2001 14:48
Nový
├ 
Re: JDBC
Vojtěch Patrný 24. 8. 2001 20:04
Nový
└ 
Re: JDBC
sk 27. 8. 2001 16:17
Nový
Free konekt k JDBC
Rob 24. 8. 2001 17:24
Nový
├ 
Re: Free konekt k JDBC
Jonas 24. 8. 2001 19:29
Nový
│
└ 
Re: Free konekt k JDBC
Rob 26. 8. 2001 11:31
Nový
│
 
├ 
Re: Free konekt k JDBC
joe 30. 1. 2002 21:09
Nový
│
 
└ 
Re: Free konekt k JDBC
joe 30. 1. 2002 21:10
Nový
├ 
Re: Free konekt k JDBC
Vojtěch Patrný 26. 8. 2001 17:03
Nový
│
└ 
Re: Free konekt k JDBC
Rob 26. 8. 2001 21:03
Nový
└ 
Re: Free konekt k JDBC
sk 27. 8. 2001 16:20
Nový
getString() začíná absurdně od indexu 1
Jura 2. 7. 2007 11:05
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem