/* * Java Servlet som visar vissa poster från en databas i en HTML-tabell. * Björn Persson, EkI, MdH - 2001-06-21. * bjorn.persson@mdh.se * * Skapa en ODBC-källa med namnet skivor (eller ändra namnet i variabeln url). */ //Importera paket för... import javax.servlet.*; //servlet import javax.servlet.http.*; //servlet import java.io.*; //I/O import java.sql.*; //databaskoppling public class DBListParameter extends HttpServlet { //Metod som anropas när servlet begärs med metoden HTTP-GET public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { //******************************************************************* //Deklarera variabler int i = 1; //Räknare för att ändra stilmall för varannan rad i tabell String strClass = null; //Sträng att placera stilmalls namn i String strArtist = null; String sql = null; strArtist = request.getParameter("Artist"); //Skapa URL för databaskoppling (ODBC-källa skivor) String url = "jdbc:odbc:skivor"; //Hämta objekt att skriva till för det resulterande HTML-dokumentet PrintWriter out = response.getWriter(); //Tala om för webbserver vad som kommer att skickas (d.v.s. HTML-kod) response.setContentType("text/html"); //******************************************************************* //Starta HTML-dokument genom att skriva ut HTML-kod out.println(""); out.println(""); out.println("Resultatet från servlet DBList"); out.println(" "); out.println(""); out.println(""); out.println("

Resultatet från servlet DBListParameter

"); out.println("

Artist och dess album i databasen

"); //******************************************************************* //Starta HTML-tabell och skriv ut rubriker för kolumner i tabell out.println(""); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); out.println(" "); //******************************************************************* //Databasobjekt kan generera fel (exceptions) och måste därför finnas // inom ett try-catch-block. try { //Ladda klass med JDBC-drivrutn Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Öppna förbindelse till databas Connection con = DriverManager.getConnection(url); ResultSet rs = null; //Om ingen artist angavs hämta alla album... if((strArtist == null) || (strArtist.length() == 0)) { //Koden nedan är samma som för klassen DBList //Skapa SQL-fråga sql = "SELECT * FROM tblAlbum ORDER BY Artist, År, Media, Titel"; //Skapa Statement-objekt Statement st = con.createStatement(); //Utför fråga och placera resultat i variabeln rs rs = st.executeQuery(sql); } else //... eller hämta endast album för artist { //Koden nedan är den nya koden //Skapa Statement-objekt och ange fråga i databas att köra CallableStatement cst= con.prepareCall("{call qryAlbumForArtist(?)}"); //Ange värde på parameter (d.v.s. frågetecknet ovan) cst.setString(1, strArtist); //Utför fråga och placera resultatet i variabeln rs rs = cst.executeQuery(); } //*************************************************************** //Loopa över posterna i frågeresultatet while(rs.next()) { //Om räknare jämne, använd stilmall med gul bakgrund if((i % 2) == 0) strClass = "normalgul"; else strClass = "normal"; out.println(" "); //Påbörja rad i HTML-tabell //Kolumn 1 - artists namn out.print(" "); //Kolumn 2 - titeln för album out.print(" "); //Kolumn 3 - år som album gavs ut out.print(" "); //Kolumn 4 - media som album finns på out.print(" "); out.println(" "); //Avsluta rad i HTML-tabell i++; } //while //*************************************************************** //Stäng frågeresultat och förbindelse rs.close(); con.close(); } //try catch(Exception e) //Hantera eventuella fel i databaskoppling { System.err.println(e); out.println("

Det uppstod ett fel...

"); out.println("

" + e.getMessage() + "
 

"); } //catch //******************************************************************* //Avsluta HTML-tabell och -dokument out.println("
Artist/grupps namnTitel på albumÅrMedia
"); out.print(rs.getString("Artist")); out.println(""); out.print(rs.getString("Titel")); out.println(""); out.print(rs.getString("År")); out.println(""); out.print(rs.getString("Media")); out.println("
"); out.println("

 

"); out.println("

Antal skivor totalt: " + (i-1) + "

"); out.println(""); out.println(""); } // doGet() public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { doGet(request, response); } // doPost() } //class DBListParameter