SQL Queries - KDD Laboratory

Download Report

Transcript SQL Queries - KDD Laboratory

Database Application Development

Chpt 6 Xin Zhang Database Management Systems Raghu Ramakrishnan 1

Embedded SQL

  SQL commands can be called from within a host language (e.g., C or Java ) program.

– SQL statements can refer to host variables (including special variables used to return status).

– Must include a statement to

connect

database.

to the right SQL relations are set-oriented. – SQL supports a mechanism called

cursor

this.

to handle Raghu Ramakrishnan Database Management Systems 2

Cursors

   Can declare a cursor on a relation or query statement (which generates a relation).

Can

move open

a cursor, and repeatedly

fetch

a tuple then the cursor, until all tuples have been retrieved.

– Can use a special clause, called which tuples are returned.

ORDER BY , in queries that are accessed through a cursor, to control the order in  Fields in ORDER BY clause must also appear in SELECT clause.

– The ORDER BY clause, which orders answer tuples, is

only

allowed in the context of a cursor.

Can also modify/delete tuple pointed to by a cursor.

Database Management Systems Raghu Ramakrishnan 3

Cursor Declaration Find names, and ages of those sailors who’s rating is above 7, in alphabetical order

EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.sname

FROM WHERE Sailors S rating >7 ORDER BY S.sname

Raghu Ramakrishnan Database Management Systems 4

Embedding SQL in C: An Example

char SQLSTATE[6]; EXEC SQL BEGIN DECLARE SECTION char c_sname[20]; short c_minrating; float c_age; EXEC SQL END DECLARE SECTION c_minrating = random(); EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.sname, S.age FROM Sailors S WHERE S.rating > :c_minrating ORDER BY S.sname; do { EXEC SQL FETCH sinfo INTO :c_sname, :c_age; printf(“%s is %d years old\n”, c_sname, c_age); } while (SQLSTATE != ‘02000’); EXEC SQL CLOSE sinfo;

Database Management Systems Raghu Ramakrishnan 5

Database APIs: Alternative to embedding

   DBMS-independent ODBC & JDBC Database can be across a network Database Management Systems Raghu Ramakrishnan 6

JDBC steps

 Create the database in your dbms  Register the database as a data source  Import java.sql.* at the beginning of your java file.

 Connect to a JDBC source Connection con = DriverManager.getConnection(“jdbc:oracle:thin:@coit ora01:1521:class”,”user”,”passwd”)  Create an SQL statement Statement stmt = con.createStatement(); stmt.executeUpdate("INSERT INTO sailor VALUES(22,'dustin',7,45.0)"); Database Management Systems Raghu Ramakrishnan 7

JDBC steps cont.

   Execute the statement – ResultSet rs = stmt.executeQuery(“Select * from …”) Parse the result – rs.next(), rs.getFloat

– ResultSetMetaData contains the information about column Close the statement and connection – stmt.close() – con.close

Database Management Systems Raghu Ramakrishnan 8

Useful resources

   JDBC tutorial http://java.sun.com/docs/books/tutorial/jd bc/index.html

UNCC COIT http://coit-servlet01.uncc.edu:8080/support/?

Example http://webpages/~xinzhang/Teaching/Sampl eJDBC.java

Raghu Ramakrishnan Database Management Systems 9

SQL API in Java (JDBC)

Connection con = // connect DriverManager.getConnection(url, ”login", ”pass"); Statement stmt = con.createStatement(); // set up stmt String query = "SELECT name, rating FROM Sailors"; ResultSet rs = stmt.executeQuery(query); try { // handle exceptions // loop through result tuples while (rs.next()) { String s = rs.getString(“name"); Int n = rs.getFloat(“rating"); System.out.println(s + " " + n); } } catch(SQLException ex) { System.out.println(ex.getMessage () + ex.getSQLState () + ex.getErrorCode ()); } Database Management Systems Raghu Ramakrishnan 10