SlideServe
Menu
Préférences
© SlideServe · v2026

JDBC

macy-rutledge avatar
34 diapositives · 557 Views · Oct 27, 2014

JDBC. Java DataBase Connectivity SQL i Java Læreboken: 8.5, s. 393-397 Forelesning i TDT4145, 14. april 2005 Av Gisle Grimen. JDBCs treenighet. Databaseoppkobling – java.sql.Connection Utføre SQL – java.sql.Statement Behandle resultater – java.sql.ResultSet

JDBC - slide 1
01 / 34JDBC
1 / 17

Télécharger la présentation

JDBC
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. JDBC • Java DataBase Connectivity • SQL i Java • Læreboken: 8.5, s. 393-397 Forelesning i TDT4145, 14. april 2005 Av Gisle Grimen

  2. JDBCs treenighet • Databaseoppkobling – java.sql.Connection • Utføre SQL – java.sql.Statement • Behandle resultater – java.sql.ResultSet • (+ feilbehandling – java.sql.SQLException)

  3. Eksempel • Koble opp • Legge in tabeller • Legge in poster • Søke • Koble ned

  4. Databaseoppkobling • Driver • Class.forName(”oracle.jdbc.driver.OracleDriver”); • DriverManager • Holder styr på drivere • Lager Connection-objekt:

  5. Databaseoppkobling • Connection • Connection con = DriverManager.getConnection(url,”bruker”,”pass”); • url: database- og driveravhengig • F.eks. ”jdbc:oracle:thin:@elefant.idi.ntnu.no:” +”1521:ELEFANT”

  6. Connection: autoCommit • con.setAutoCommit(boolean) • Default: true • Committer etter hver executeUpdate() • Hvis false: Transaksjonsstyring • con.commit() • con.rollback()

  7. Connection – flere metoder • createStatement(), prepareStatement(sql) • Lager Statement-objekt • close() • Lukker databaseoppkoblingen

  8. Koble opp public Connection connect() throws SQLException, ClassNotFoundException{ Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection(“jdbc:oracle:thin:@"+ "elefant.idi.ntnu.no:1521:ELEFANT", "elefant", "test"); return con; }

  9. Koble ned public void disconnect(Connection con)throws SQLException{ con.close(); }

  10. Eksempel tabell

  11. Statements • To typer statements • Statement • Utføre SQL direkte • PreparedStatememt • Prekompilere SQL

  12. Statement • Sender SQL-setninger til databasen • Lages ved hjelp av Connection objektet: • Statement stmt = con.createStatement();

  13. Statements ”tre metoder” • executeUpdate(String sql) • Resultat, antall rader påvirket (int) • executeQuery(String sql) • Resultat, svar på spørring (ResultSet) • close()

  14. Statement: executeUpdate(sql) • Alle SQL-setninger unntatt SELECT • Eks. stmt.executeUpdate(”insert into post ” +”values (5253,’Sandsli’)”; • Merk: • Enkeltfnutter rundt SQL-stringer (’Sandsli’) • Ikke semikolon til slutt i SQL-setningen • Returverdi: antall rader påvirket (int)

  15. Statement: executeQuery(sql) • SELECT-setninger • Eks.ResultSet rs = stmt.executeQuery(”select * from post”); • Returnerer ResultSet

  16. Statement: close() • Et Statement kan utføre mange SQL-setninger • Bruk close() når du er ferdig • Deallokerer ressurser • Viktig hvis man lager mange Statementer – man kan gå tom. • NB: Husk å lukke statmements, ellers kan feilmeldinger som ”maximum open cursors exceeded” oppstå

  17. PreparedStatement • Sender også SQL-setninger til databasen • Prekompilering” av SQL-setning • Effektivt ved gjentakelse, ryddigere kode(?) • Lages ved hjelp av Connection objektet: PreparedStatement stmt = con.prepareStatement(sql);

  18. PreparedStatement ”tre metoder” • executeUpdate() • Resultat, antall rader påvirket (int) • executeQuery() • Resultat, svar på spørring (ResultSet) • close() • SQLen lages i konstruktøren, metoder uten paramter

  19. PreparedStatement; eksemepl • PreparedStatement ps = con.prepareStatement(”insert into post ” + ”values (?,?)”); • ps.setInt(1,5253); • ps.setString(2,”Sandsli”); • ps.executeUpdate();

  20. ResultSet • Innholder resultat av en SQL spørre setning. • Resultat av en: • executeQuery() • executeQuery(sql)

  21. ResultSet • Tabell med resultat og ”peker”

  22. ResultSet: next() • Flytter pekeren til neste rad (hvis det er noen) • Returnerer boolean – true hvis raden finnes

  23. ResultSet: next() • Flytter pekeren til neste rad (hvis det er noen) • Returnerer boolean – true hvis raden finnes

  24. ResultSet: next() • Flytter pekeren til neste rad (hvis det er noen) • Returnerer boolean – true hvis raden finnes

  25. ResultSet: getInt(), getString()... • getXXX()-metoder for de fleste primitive typer + String, Date m.fl. • Parameter: enten kolonnenummer (start fra 1) eller kolonnenavn

  26. ResultSet: getXXX()-eksempler • rs.getInt(1)  5014 • rs.getString(2)  ”Bergen” • rs.getString(”Post_nr”)  ”5014”

  27. ResultSet: null • rs.getInt(1)  0 • rs.getInt(2)  0

  28. ResultSet: wasNull() • rs.getInt(1)  0 rs.wasNull()  false • rs.getInt(2)  0 rs.wasNull()  true

  29. ResultSet: close() • Frigjør ressurser • Meget viktig

  30. Legge in tabeller public void createTables(Connection con)throws SQLException{ Statement s = con.createStatement(); s.executeUpdate("CREATE TABLE POST" + "(Post_NR NUMBER(4),"+ "Post_Sted VARCHAR2(20),"+ "PRIMARY KEY(POST_NR))"); s.close(); }

  31. Legge in poster public void insertPosts(Connection con)throws SQLException{Statement s = con.createStatement(); s.executeUpdate("insert into post values "+ "( 5014, 'Bergen')"); s.executeUpdate("insert into post values "+ "( 5252, 'Soreidgrend')"); s.executeUpdate("insert into post values "+ "( 5253, 'Sandsli')"); s.close(); }

  32. Søk public void searchForPeopleGivenPostSted(String postSted, Connection con)throws SQLException{ PreparedStatement ps = con.prepareStatement( "select P_NR, NAVN from Person,Post where "+ "Person.Post_NR = POST.Post_NR AND Post_Sted=?"); ps.setString(1, postSted); ResultSet rs = ps.executeQuery(); while (rs.next()) { System.out.println("P_NR: ”+rs.getInt(1)+"\t Navn: "+rs.getString(2)); } rs.close(); ps.close(); }

  33. Søk public void searchStatement(String postSted,Connection con) throws SQLException{Statement s = con.createStatement(); ResultSet rs = s.executeQuery("select P_NR,"+ " NAVN from Person,Post where "+ "Person.Post_NR = POST.Post_NR "+ "AND Post_Sted='"+postSted+"'"); while (rs.next()) { System.out.println("P_NR: "+rs.getInt(1)+"\t Navn: "+rs.getString(2)); } rs.close(); s.close(); }

  34. Hjelp • http://java.sun.com/j2se/1.4.1/docs/api/ • http://www.idi.ntnu.no/~sif8020/oppskrifter/jdbc.html • http://java.sun.com/docs/books/tutorial/jdbc/ • http://developer.java.sun.com/developer/Books/JDBCTutorial/ • Oracle JDBC kan bli funnet på: • http://www.idi.ntnu.no/emner/tdt4145/programvare/ojdbc14.jar