BrukeSQLfraJava
MedJDBC(JavaDatabaseConnec/vity)
0
1
1
1
2
Packagejava.sql
3
Packagejava.sql(SE7)
ArrayBlobCallableStatementClobConnecIonDatabaseMetaDataDriverNClobParameterMetaDataPreparedStatementRef
ResultSetResultSetMetaDataRowIdSavepointSQLDataSQLInputSQLOutputSQLXMLStatementStructWrapper
4
Packagejava.sql
ArrayBlobCallableStatementClobConnecIonDatabaseMetaDataDriverNClobParameterMetaDataPreparedStatementRef
ResultSetResultSetMetaDataRowIdSavepointSQLDataSQLInputSQLOutputSQLXMLStatementStructWrapper
4
Packagejava.sql
ArrayBlobCallableStatementClobConnecIonDatabaseMetaDataDriverNClobParameterMetaDataPreparedStatementRef
ResultSetResultSetMetaDataRowIdSavepointSQLDataSQLInputSQLOutputSQLXMLStatementStructWrapper
4
ConnecIon
5
ConnecIon
Statement
5
ConnecIon
Statement
ResultSet
5
Packagejava.sql
DriverManager
ThebasicserviceformanagingasetofJDBCdrivers
7klasserijava.sql.Vitrengerénavdem:
Herfinnervimetodersomgirossenforbindelse.De\eskjermedmetodersomreturnerer(enpekerIl)etobjektavtypenConnecIon.
5
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
IklassenDriverManagerfinnervimetodersomgirossenforbindelse.De\eskjermedmetodersomreturnerer(enpekerIl)etobjektavtypenConnecIon.
HåndtereforbindelsermellomJavaogPostgreSQL
6
HåndtereforbindelsermellomJavaogPostgreSQL
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
DriverManager.getConnecIon(url,p);
IklassenDriverManagerfinnervimetodersomgirossenforbindelse.De\eskjermedmetodersomreturnerer(enpekerIl)etobjektavtypenConnecIon.
6
DriverManager.getConnecIon(url,p);
6
DriverManager.getConnecIon(url,p);
String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb";
6
DriverManager.getConnecIon(url,p);
String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties();
6
DriverManager.getConnecIon(url,p);
String url = "jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"; Properties p = new Properties(); p.setProperty("ssl", "true");
6
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
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
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
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
DriverManager.getConnecIon(url,p);
ProperIes String
p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
KlassedatastrukturforklassenDriverManager
6
ConnecIoncon=DriverManager.getConnecIon(url,p);
ProperIes String
p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
KlassedatastrukturforklassenDriverManager
6
ConnecIon
ConnecIoncon=DriverManager.getConnecIon(url,p);
ConnecIon
con
6
ConnecIon
con
6
ConnecIon
con
SendeSQL-setningIlDBMS
6
KjøreSQL-kommandoer:Statement-klassen
ConnecIon
conStatementcreateStatement()
7
ConnecIon
conStatementcreateStatement()
/*CreatesaStatementobjectforsendingSQLstatementstothedatabase.*/
7
KjøreSQL-kommandoer:Statement-klassen
ConnecIon
conStatementcreateStatement()
Statement stm = con.createStatement();
/*CreatesaStatementobjectforsendingSQLstatementstothedatabase.*/
7
KjøreSQL-kommandoer:Statement-klassen
ConnecIon
conStatementcreateStatement()
Statement stm = con.createStatement();
Statement
stm
/*CreatesaStatementobjectforsendingSQLstatementstothedatabase.*/
7
KjøreSQL-kommandoer:Statement-klassen
Statement
stm
8
KjøreSQL-kommandoer:Statement-objektet
Statement
stm
8
KjøreSQL-kommandoer:Statement-objektet
Statement
stm
ResultSetexecuteQuery(Stringsql)
ExecutesthegivenSQLstatement,whichreturnsasingleResultSetobject.
8
KjøreSQL-kommandoer:Statement-objektet
ConnecIonStatement
ResultSet
8
Ujørespørringer:Statement-objektet
Statement
stm
ResultSetexecuteQuery(Stringsql)
Stringspørring="selectF.filmidasfid,F.ItleasI\el,F.prodyearaspaarfromfilmFnaturaljoinFilmcountryCwhereC.country='Norway’";
8
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
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
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
ConnecIon
Statement
ResultSet
8
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
ProperIes String
p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"
11
ProperIes String
p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
KlassedatastrukturforklassenDriverManager
11
ProperIes String
p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
ConnecIon
con
StatementcreateStatement()
11
ProperIes String
p url"jdbc:postgresql://dbpg-ifi-kurs.uio.no/fdb"
staIcConnecIongetConnecIon(Stringurl,ProperIesinfo)
Statement
stm
ResultSetexecuteQuery(Stringsql)
ConnecIon
con
StatementcreateStatement()
11
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
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
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
ConnecIon
Statement
ResultSet
11
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
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
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
Oppgave
Foreslåspørringersomdetervanskeligågjøremedselect-setningen,hvorJavaellerPythonvillehaværtIl(stor)hjelpforåfårikIgsvar.HarduopplevdoppgaversomduskulleløsemedSQLhvorduharsavnet‘verktøy’fraPython/Javaellerandreprogrammeringsspråk?
15
create table Gruppelærer ( brnavn varchar(8), år int, vh varchar(4) );
16
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
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
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
Top Related