+ All Categories
Home > Documents > Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for...

Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for...

Date post: 04-Jun-2020
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
80
Bruke SQL fra Java Med JDBC (Java Database Connec/vity) 0
Transcript
Page 1: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

BrukeSQLfraJava

MedJDBC(JavaDatabaseConnec/vity)

0

Page 2: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

1

Page 3: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

1

Page 4: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

1

Page 5: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

2

Page 6: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Packagejava.sql

3

Page 7: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Packagejava.sql(SE7)

ArrayBlobCallableStatementClobConnecIonDatabaseMetaDataDriverNClobParameterMetaDataPreparedStatementRef

ResultSetResultSetMetaDataRowIdSavepointSQLDataSQLInputSQLOutputSQLXMLStatementStructWrapper

4

Page 8: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Packagejava.sql

ArrayBlobCallableStatementClobConnecIonDatabaseMetaDataDriverNClobParameterMetaDataPreparedStatementRef

ResultSetResultSetMetaDataRowIdSavepointSQLDataSQLInputSQLOutputSQLXMLStatementStructWrapper

4

Page 9: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Packagejava.sql

ArrayBlobCallableStatementClobConnecIonDatabaseMetaDataDriverNClobParameterMetaDataPreparedStatementRef

ResultSetResultSetMetaDataRowIdSavepointSQLDataSQLInputSQLOutputSQLXMLStatementStructWrapper

4

Page 10: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

5

Page 11: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

Statement

5

Page 12: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

Statement

ResultSet

5

Page 13: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Packagejava.sql

DriverManager

ThebasicserviceformanagingasetofJDBCdrivers

7klasserijava.sql.Vitrengerénavdem:

Herfinnervimetodersomgirossenforbindelse.De\eskjermedmetodersomreturnerer(enpekerIl)etobjektavtypenConnecIon.

5

Page 14: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

IklassenDriverManagerfinnervimetodersomgirossenforbindelse.De\eskjermedmetodersomreturnerer(enpekerIl)etobjektavtypenConnecIon.

HåndtereforbindelsermellomJavaogPostgreSQL

6

Page 15: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

HåndtereforbindelsermellomJavaogPostgreSQL

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

DriverManager.getConnecIon(url,p);

IklassenDriverManagerfinnervimetodersomgirossenforbindelse.De\eskjermedmetodersomreturnerer(enpekerIl)etobjektavtypenConnecIon.

6

Page 16: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

6

Page 17: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb";

6

Page 18: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties();

6

Page 19: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties(); p.setProperty("ssl", "true");

6

Page 20: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties(); p.setProperty("ssl", "true"); p.setProperty("sslfactory",

"org.postgresql.ssl.NonValidatingFactory");

6

Page 21: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties(); p.setProperty("ssl", "true"); p.setProperty("sslfactory",

"org.postgresql.ssl.NonValidatingFactory"); p.put("user", "michael");

6

Page 22: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties(); p.setProperty("ssl", "true"); p.setProperty("sslfactory",

"org.postgresql.ssl.NonValidatingFactory"); p.put("user", "michael"); p.put("password", passord);

6

Page 23: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties(); p.setProperty("ssl", "true"); p.setProperty("sslfactory",

"org.postgresql.ssl.NonValidatingFactory"); p.put("user", "michael"); p.put("password", passord);

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

6

Page 24: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

DriverManager.getConnecIon(url,p);

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

KlassedatastrukturforklassenDriverManager

6

Page 25: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIoncon=DriverManager.getConnecIon(url,p);

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

KlassedatastrukturforklassenDriverManager

6

Page 26: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

ConnecIoncon=DriverManager.getConnecIon(url,p);

ConnecIon

con

6

Page 27: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

con

6

Page 28: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

con

SendeSQL-setningIlDBMS

6

Page 29: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

KjøreSQL-kommandoer:Statement-klassen

ConnecIon

conStatementcreateStatement()

7

Page 30: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

conStatementcreateStatement()

/*CreatesaStatementobjectforsendingSQLstatementstothedatabase.*/

7

KjøreSQL-kommandoer:Statement-klassen

Page 31: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

conStatementcreateStatement()

Statement stm = con.createStatement();

/*CreatesaStatementobjectforsendingSQLstatementstothedatabase.*/

7

KjøreSQL-kommandoer:Statement-klassen

Page 32: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

conStatementcreateStatement()

Statement stm = con.createStatement();

Statement

stm

/*CreatesaStatementobjectforsendingSQLstatementstothedatabase.*/

7

KjøreSQL-kommandoer:Statement-klassen

Page 33: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Statement

stm

8

KjøreSQL-kommandoer:Statement-objektet

Page 34: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Statement

stm

8

KjøreSQL-kommandoer:Statement-objektet

Page 35: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Statement

stm

ResultSetexecuteQuery(Stringsql)

ExecutesthegivenSQLstatement,whichreturnsasingleResultSetobject.

8

KjøreSQL-kommandoer:Statement-objektet

Page 36: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIonStatement

ResultSet

8

Page 37: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Ujørespørringer:Statement-objektet

Statement

stm

ResultSetexecuteQuery(Stringsql)

Stringspørring="selectF.filmidasfid,F.ItleasI\el,F.prodyearaspaarfromfilmFnaturaljoinFilmcountryCwhereC.country='Norway’";

8

Page 38: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Ujørespørringer:Statement-objektet

Statement

stm

ResultSetexecuteQuery(Stringsql)

Stringspørring="selectF.filmidasfid,F.ItleasI\el,F.prodyearaspaarfromfilmFnaturaljoinFilmcountryCwhereC.country='Norway’";

String spørring = "select F.filmid as fid, " +" F.title as tittel, " +" F.prodyear as paar " +"from film F natural join Filmcountry C " +"where C.country='Norway' " ; 8

Page 39: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Ujørespørringer:Statement-objektet

Statement

stm

ResultSetexecuteQuery(Stringsql)

String spørring = "select F.filmid as fid, " +" F.title as tittel, " +" F.prodyear as paar " +"from film F natural join Filmcountry C " +"where C.country='Norway' " ;

8

Page 40: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Ujørespørringer:Statement-objektet

Statement

stm

ResultSetexecuteQuery(Stringsql)

String spørring = "select F.filmid as fid, " +" F.title as tittel, " +" F.prodyear as paar " +"from film F natural join Filmcountry C " +"where C.country='Norway' " ; ResultSet norskeFilmer = stm.executeQuery (spørring);

8

Page 41: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

Statement

ResultSet

8

Page 42: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

9

Page 43: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Atableofdatarepresen/ngadatabaseresultset,whichisusuallygeneratedbyexecu/ngastatementthatqueriesthedatabase.

9

Page 44: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

AResultSetobjectmaintainsacursorpoin/ngtoitscurrentrowofdata.Ini/allythecursorisposi/onedbeforethefirstrow.Thenextmethodmovesthecursortothenextrow,andbecauseitreturnsfalsewhentherearenomorerowsintheResultSetobject,itcanbeusedinawhilelooptoiteratethroughtheresultset..

9

Page 45: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

AResultSetobjectmaintainsacursorpoin/ngtoitscurrentrowofdata.Ini/allythecursorisposi/onedbeforethefirstrow.Thenextmethodmovesthecursortothenextrow,andbecauseitreturnsfalsewhentherearenomorerowsintheResultSetobject,itcanbeusedinawhilelooptoiteratethroughtheresultset..

cursor

9

Page 46: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

cursor

booleannext()

9

Page 47: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

cursor

booleannext()

thecurrentrow

9

Page 48: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

cursor

booleannext()

thecurrentrow

9

Page 49: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

cursor

booleannext()

thecurrentrow

9

Page 50: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

booleannext()

cursor thecurrentrow

9

Page 51: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

booleannext()

cursor thecurrentrow

9

Page 52: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer

ResultSet norskeFilmer = stm.executeQuery (spørring);

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.

cursor

booleannext()

9

Page 53: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Henteresultatene:ResultSet-objektet

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

Movesthecursorforwardonerowfromitscurrentposi/on.RetrievesthevalueofthedesignatedcolumninthecurrentrowofthisResultSetobjectasaString.RetrievesthevalueofthedesignatedcolumninthecurrentrowofthisResultSetobjectasanint.

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

9

Page 54: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

EtResultSet-objekt

Movesthecursorforwardonerowfromitscurrentposi/on.RetrievesthevalueofthedesignatedcolumninthecurrentrowofthisResultSetobjectasaString.RetrievesthevalueofthedesignatedcolumninthecurrentrowofthisResultSetobjectasanint.

9

Page 55: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

EtResultSet-objekt String title = norskeFilmer.getString(2);

10

Page 56: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

EtResultSet-objekt

“Varis”Itle

String

String title = norskeFilmer.getString(2);

10

Page 57: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

EtResultSet-objekt

“Varis”Itle

String

String title = norskeFilmer.getString(2);int filmid = norskeFilmer.getInt(“fid“); 10

Page 58: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

EtResultSet-objekt String title = norskeFilmer.getString(2);int filmid = norskeFilmer.getInt(“fid“);

“Varis”Itle

String

230filmid

int

10

Page 59: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

while ( norskeFilmer.next() ) { fm = new Film(norskeFilmer.getInt("fid")); fm.tittel = norskeFilmer.getString("tittel"); fm.produksjonsår = norskeFilmer.getInt("paar"); filmer.add(fm); }

10

Page 60: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

cursor

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

thecurrentrow

while ( norskeFilmer.next() ) { fm = new Film(norskeFilmer.getInt("fid")); fm.tittel = norskeFilmer.getString("tittel"); fm.produksjonsår = norskeFilmer.getInt("paar"); filmer.add(fm); }

10

Page 61: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

cursor thecurrentrow

while ( norskeFilmer.next() ) { fm = new Film(norskeFilmer.getInt("fid")); fm.tittel = norskeFilmer.getString("tittel"); fm.produksjonsår = norskeFilmer.getInt("paar"); filmer.add(fm); }

10

Page 62: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ResultSet

norskeFilmer fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

booleannext()

StringgetString(StringcolumnLabel)

intgetInt(intcolumnIndex)

cursor thecurrentrow

while ( norskeFilmer.next() ) { fm = new Film(norskeFilmer.getInt(1)); fm.tittel = norskeFilmer.getString("tittel"); fm.produksjonsår = norskeFilmer.getInt(3); filmer.add(fm); }

10

Page 63: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Properties p = new Properties(); p.setProperty("ssl", "true"); p.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory"); p.put("user", "michael"); p.put("password", passord); // "ifikurs_ro"); String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Connection con = DriverManager.getConnection(url, p); } Statement stm = con.createStatement(); String spørring = "select F.filmid as fid, " +" F.title as tittel, " +" F.prodyear as paar " +"from film F natural join Filmcountry C "

+"where C.country='Norway'" ; ResultSet norskeFilmer = stm.executeQuery (spørring); while (norskeFilmer.next() ) { fm = new Film(norskeFilmer.getInt("fid")); fm.tittel = norskeFilmer.getString("tittel"); fm.produksjonsår = norskeFilmer.getInt("paar"); filmer.add(fm); } 11

Page 64: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Properties p = new Properties(); p.setProperty("ssl", "true"); p.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory"); p.put("user", "michael"); p.put("password", passord); // "ifikurs_ro"); String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; String spørring = "select F.filmid as fid, " +" F.title as tittel, " +" F.prodyear as paar " +"from film F natural join Filmcountry C "

+"where C.country='Norway'" ; DriverManager.getConnection (url,p).createStatement( ).executeQuery(spørring); while (norskeFilmer.next() ) { fm = new Film(norskeFilmer.getInt("fid")); fm.tittel = norskeFilmer.getString("tittel"); fm.produksjonsår = norskeFilmer.getInt("paar"); filmer.add(fm); }

11

Page 65: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

11

Page 66: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

KlassedatastrukturforklassenDriverManager

11

Page 67: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

ConnecIon

con

StatementcreateStatement()

11

Page 68: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

Statement

stm

ResultSetexecuteQuery(Stringsql)

ConnecIon

con

StatementcreateStatement()

11

Page 69: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

Statement

stm

ResultSetexecuteQuery(Stringsql)

ConnecIon

con

StatementcreateStatement()

String

"selectF.filmidasfid,F.ItleasI\el,F.prodyearaspaarfromfilmFnaturaljoinFilmcountryCwhereC.country='Norway’"spørring

11

Page 70: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ProperIes String

p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"

staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)

Statement

stm

ResultSetexecuteQuery(Stringsql)

ConnecIon

con

StatementcreateStatement()

ResultSet

norskeFilmerString

"selectF.filmidasfid,F.ItleasI\el,F.prodyearaspaarfromfilmFnaturaljoinFilmcountryCwhereC.country='Norway’"spørring

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

1111

Page 71: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Statement

stm

ResultSetexecuteQuery(Stringsql)

ConnecIon

con

StatementcreateStatement()

ResultSet

norskeFilmerString

"selectF.filmidasfid,F.ItleasI\el,F.prodyearaspaarfromfilmFnaturaljoinFilmcountryCwhereC.country='Norway’"spørring

fid | tittel | paar ---------+-------------------------------+------ 230 | Varis | 2004 340 | Anolit | 2002 356 | Kvinnen i mitt liv | 2003 632 | Syx | 1988 664 | Portrettet | 1954 774 | 22 | 2000 792 | Andre omgang | 2007 998 | Digre daier | 1997 1014 | Stopp | 2001 1030 | Tid for frokost | 2004 ...

11

Page 72: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

ConnecIon

Statement

ResultSet

11

Page 73: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Parametrisertespørringer•  Hvaomviønskeråbrukestringsellerannenbrukerinput?•  Deterikkelurtåkonkateneredissepå«vanlig»måte!

Omvif.eks.harenstringsominneholderfølgende:String input = "O'boy" Servikanskjeatde\ekanføreIlproblemeridennespørringen:String query = "SELECT * FROM tabell WHERE name = '"+input+"' " System.out.println(query)

Skrivutfølgende: SELECT * FROM tabell WHERE name = 'O'boy'

12

Page 74: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Parametrisertespørringer•  Hvaomviønskeråbrukestringsellerannenbrukerinput?•  Deterikkelurtåkonkateneredissepå«vanlig»måte!

Løsning:VibrukerPreparedStatementistedetforStatementslik:int aar = 2002; String tittel = "Rachida"; String s = "SELECT filmid FROM film WHERE title = ? AND prodyear = ?"; try { PreparedStatement stm = connection.prepareStatement(s); stm.setString(1, tittel); stm.setInt(2, aar); ResultSet res = stm.executeQuery(); ...

} catch(SQLException e) { // Noe gikk galt! e.printStackTrace(); } 13

Page 75: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

NyvgSQLIloblig6•  FordatalagringsnakkervigjerneomCRUD–Create,Read,Update,Delete•  CreateIlsvarer«INSERT INTO»,ReadIlsvarer«SELECT»

•  IIlleggkandetværenyvgåviteomhvordanvioppdatererogsle\erdataiSQL:

•  UPDATE–oppdatererradersomIlfredssIllerenbeIngelse•  UPDATE tabellnavn

SET kolonne1 = verdi1, kolonne2 = verdi2, ... WHERE betingelse; f.eks.: UPDATE timeliste SET beskrivelse = 'Ny beskrivelse' WHERE timelistenr = 3;

•  DELETE–sle\erradersomIlfredssIllerenbeIngelse•  DELETE FROM tabellnavn

where betingelse f.eks.: DELETE FROM timeliste WHERE timelistenr = 8; 14

Page 76: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

Oppgave

Foreslåspørringersomdetervanskeligågjøremedselect-setningen,hvorJavaellerPythonvillehaværtIl(stor)hjelpforåfårikIgsvar.HarduopplevdoppgaversomduskulleløsemedSQLhvorduharsavnet‘verktøy’fraPython/Javaellerandreprogrammeringsspråk?

15

Page 77: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

create table Gruppelærer ( brnavn varchar(8), år int, vh varchar(4) );

16

Page 78: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

create table Gruppelærer ( brnavn varchar(8), år int, vh varchar(4) );

Gruppelærer

grlrint

brnavn år vh

String String2018mjstang vår

brnavn | år | vh---------+------+----- mjstang | 2018 | vår mjstang | 2017 | høst

16

Page 79: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

h\p://heim.ifi.uio.no/inf1300/oppgaver/IdlEksmOppg/2011-2.pdf

create table Gruppelærer ( brnavn varchar(8), år int, vh varchar(4) );

Forhvergruppelærer,finndetlengsteantallsemesterevedkommendeharværtgruppelærersammenhengende.F.eks.vilensomharværtgruppelærervåren2008,våren2009,høsten2009,våren2010,våren2011oghøsten2011hatresammenhengendesemesterepådetmeste(våren2009,høsten2009ogvåren2010)pågrunnavbruddhøsten2008oghøsten2010.

17

Page 80: Bruke SQL fra Java - Universitetet i oslo · Package java.sql DriverManager The basic service for managing a set of JDBC drivers 7 klasser i java.sql. Vi trenger én av dem: Her finner

create view kodeSem as ( select brnavn, år*2 as sk from Gruppelærer

where vh = 'vår' ) union ( select brnavn, år*2 + 1 as sk from Gruppelærer

where vh = 'høst' ) ; create view diffSem as select k2.brnavn, k2.sk, (k2.sk - k1.sk) as diff from kodeSem k1, kodeSem k2 where k1.brnavn = k2.brnavn and k2.sk >= k1.sk ; create view diffHull as select d1.brnavn, d1.sk , d1.diff from diffSem d1 where d1.diff+1 not in ( select d2.diff from diffSem d2

where d2.brnavn = d1.brnavn and d2.sk = d1.sk and d2.diff > d1.diff ) ;

select R.brnavn, max(antsmh) as makssammenhengende from ( select brnavn, sk, ( min(diff) + 1 ) as antsmh from diffHull group by brnavn, sk ) as R group by R.brnavn ;

create table Gruppelærer ( brnavn varchar(8), år int, vh varchar(4) );

18


Recommended