Presentation is loading. Please wait.

Presentation is loading. Please wait.

95-712 Object Oriented Programming Java Java’s JDBC Allows access to any ANSI SQL-2 DBMS Does its work in terms of SQL The JDBC has classes that represent:

Similar presentations


Presentation on theme: "95-712 Object Oriented Programming Java Java’s JDBC Allows access to any ANSI SQL-2 DBMS Does its work in terms of SQL The JDBC has classes that represent:"— Presentation transcript:

1 95-712 Object Oriented Programming Java Java’s JDBC Allows access to any ANSI SQL-2 DBMS Does its work in terms of SQL The JDBC has classes that represent: database connections SQL Statements Result sets database metadata Can be connected to ODBC We’ll review some database terminology And look over a simple stand alone JDBC Application

2 95-712 Object Oriented Programming Java Database Terminology Database: A shared collection of logically related data (and a description of this data) designed to meet the information needs of an organization Relation: A table with columns and rows Attribute: A named column of a relation Tuple: A row in a relation Definitions from Database Systems by Connolly, Begg, and Strachan Gary Alperson helped developed these slides and the JDBC example.

3 95-712 Object Oriented Programming Java Sample Table

4 95-712 Object Oriented Programming Java Attribute

5 95-712 Object Oriented Programming Java Tuple

6 95-712 Object Oriented Programming Java SQL Data Definition Language (DDL) –Create tables –Modify tables –Delete (drop) tables Data Manipulation Language (DML) –Insert data –Update data –Select data

7 95-712 Object Oriented Programming Java Select Statement We will use this data for our examples

8 95-712 Object Oriented Programming Java From the broker table, select the contents of the last name attribute Query SELECT lname FROM broker; Results SQL is not case sensitive. Key SQL words are capitalized and line breaks are inserted by convention.

9 95-712 Object Oriented Programming Java From the broker table, select all attributes Query SELECT * FROM broker; Results * Acts as a wildcard

10 95-712 Object Oriented Programming Java From the broker table, select all attributes where the last name is Smith Query SELECT * FROM broker WHERE lname = ‘Smith’; Results Note that the string is enclosed by single quotes The contents of a string are case sensitive

11 95-712 Object Oriented Programming Java Use AND or OR to connect multiple where clauses Query SELECT * FROM broker WHERE lname = ‘Smith’ AND fname = ‘John’; Results

12 95-712 Object Oriented Programming Java Example with two Tables One-to-many relationship Each broker may have many customers Each customer is only affiliated with one broker The b_id joins both tables by identifying the unique broker that each customer is associated with

13 95-712 Object Oriented Programming Java Cartesian Product When you do a query on multiple tables, SQL begins by creating the Cartesian product, which combines each tuple from one relation from every tuple of the other relation. (Actual SQL implementations are free to compute the resulting table efficiently,i.e., the actual Cartesian product may not be generated at all.)

14 95-712 Object Oriented Programming Java Query SELECT * FROM customer, broker WHERE broker.b_id = 1; SQL does not realize that the b_id in the customer table is the same as the b_id in the broker table unless you join them in the where clause. Results

15 95-712 Object Oriented Programming Java Cartesian Product Query SELECT * FROM customer, broker WHERE broker.b_id = 1 AND broker.b_id = customer.b_id; Results

16 95-712 Object Oriented Programming Java ODBC ODBC is a programming interface that enables applications to access data in database systems that use Structured Query Language (SQL) as a data standard.

17 95-712 Object Oriented Programming Java Creating an ODBC Connection Click on the Start button. Choose Settings, Control Panel Double-click on ODBC Data Sources Choose the System DSN tab Click Add

18 95-712 Object Oriented Programming Java Click on the desired driver (MSAccess) Click on the Finish button

19 95-712 Object Oriented Programming Java Enter a Data Source Name Click on the Select button Locate the desired file or directory Click OK

20 95-712 Object Oriented Programming Java SQL Query as a Java String The SQL SELECT customer.lname FROM customer, broker WHERE broker.lname = ‘Smith’ AND broker.b_id <> 1 AND broker.b_id = customer.b_id; From both tables select the last names of all customers whose broker’s last name is Smith but whose broker ID is not 1.

21 95-712 Object Oriented Programming Java Executing a query in Java // Statement aStatement = statement got from connection String last = “Smith”; int nonID = 1; String q = “SELECT customer.lname FROM customer, broker” + “WHERE broker.lname = \’” + last + “\’ AND broker.b_id” + “<>” + nonID + “AND broker.b_id = customer.b_id;”); ResultSet rs = aStatement.executeQuery(q); The slash (\) is the escape character. It precedes the single quote to tell Java to include that quote in the String The String last is outside of the double quotes, because it must be concatonated with the String sent to the database, but it falls within the single quotes so that SQL treats it as a string nonID does not go within single quotes since it is numeric Since the String is an SQL statement, it uses = and <> rather than == and !=

22 95-712 Object Oriented Programming Java A Simple Application // This program makes use of a stock database // and the primary JDBC classes (Connection, Statement, // ResultSet and ResultSetMetaData) import java.util.*; import java.sql.*; import java.io.*; public class TestCoolStocksDB { public static void main(String args[]) { Connection con = null; Statement s = null;

23 95-712 Object Oriented Programming Java ResultSet rs = null; ResultSetMetaData rsm = null; String answer = ""; try { DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver()); con = DriverManager.getConnection("jdbc:odbc:CoolStocks"); s = con.createStatement(); rs = s.executeQuery("select * from customer"); rsm = rs.getMetaData();

24 95-712 Object Oriented Programming Java while(rs.next()) { for(int col = 1; col <= rsm.getColumnCount(); col++) answer += rs.getString(col); } con.close(); } catch (SQLException sqle) { System.err.println("Exception caught in main:" + sqle); } System.out.println(answer); }

25 95-712 Object Oriented Programming Java A Simple JSP/JDBC Example stocks.mdb database schema There are three tables. Both customer and stocks have a one- to-many relationship with portfolios. The database stocks.mdb was registered with the ODBC driver as “CoolStocks”

26 95-712 Object Oriented Programming Java Register w/ODBC Create an ODBC data source. Click on the Start button. Choose Settings, Control Panel Double-click on ODBC Data Sources Choose the System DSN tab Click Add Click on the desired driver (MSAccess) Click on the Finish button Enter a Data Source Name (I called my database CoolStocks and that name appears in the java code below) Click on the Select button Locate the directory and file containing your database. This will be the “stock.mdb” file created by Microsoft Access. Click OK

27 95-712 Object Oriented Programming Java A Simple JSP/JDBC Example JSP JDBC Example 1 <!– Adapted from James Goodwill’s Pure JSP 

28 95-712 Object Oriented Programming Java <% Connection con = null; try { // Load the Driver class file Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Make a connection to the ODBC datasource Movie Catalog con = DriverManager.getConnection("jdbc:odbc:CoolStocks"); // Create the statement Statement statement = con.createStatement(); // Use the created statement to SELECT the DATA // FROM the customer Table. ResultSet rs = statement.executeQuery("SELECT * " + "FROM customer"); // Iterate over the ResultSet %>

29 95-712 Object Oriented Programming Java Customer - ID Last Name First Name <% while ( rs.next() ) { // get the id, convert to String out.println(" \n " + rs.getString("id") + " "); // get the last name out.println(" " + rs.getString("lname") + " "); // get the first name out.println(" " + rs.getString("fname") + " \n</TR"); }

30 95-712 Object Oriented Programming Java // Close the ResultSet rs.close(); } catch (IOException ioe) { out.println(ioe.getMessage()); } catch (SQLException sqle) { out.println(sqle.getMessage()); } catch (ClassNotFoundException cnfe) { out.println(cnfe.getMessage()); } catch (Exception e) { out.println(e.getMessage()); }

31 95-712 Object Oriented Programming Java finally { try { if ( con != null ) { // Close the connection no matter what con.close(); } catch (SQLException sqle) { out.println(sqle.getMessage()); } %>

32 95-712 Object Oriented Programming Java It Works!


Download ppt "95-712 Object Oriented Programming Java Java’s JDBC Allows access to any ANSI SQL-2 DBMS Does its work in terms of SQL The JDBC has classes that represent:"

Similar presentations


Ads by Google