Slides on Utility Classes and JDBC
Download
Report
Transcript Slides on Utility Classes and JDBC
Java Utility Classes
CS 21b
Some Java Utility Classes
Vector
Hashtable
StringTokenizer
* import java.util.*;
Vector
Indexed data structure that
automatically resizes
Selected Methods
void addElement(Object o)
int size()
Object elementAt(int index)
void setElementAt(Object elem, int index)
Vector Example
Vector names = new Vector();
names.addElement(“Bart”);
names.addElement(“Lisa”);
names.addElement(“Maggie”);
for (int i = 0; i < names.size(); i++)
{
System.out.println(names.elementAt(i));
}
names.setElementAt(“Homer”,1);
names.addElement(“Marge”);
for (int i = 0; i < names.size(); i++)
{
System.out.println(names.elementAt(i));
}
Hashtable
Data structure that associates values
with a key for efficient look up
Selected Methods
void put(Object key, Object value)
Object get(Object key)
Object remove(Object key)
Hashtable Example
Hashtable grades = new Hashtable();
grades.put(“Martin”, “A”);
grades.put(“Nelson”, “F”);
grades.put(“Millhouse”, “C”);
System.out.println(grades.get(“Nelson”));
System.out.println(grades.get(“Martin”));
grades.put(“Nelson”, “W”);
grades.remove(“Martin”);
System.out.println(grades.get(“Nelson”));
System.out.println(grades.get(“Martin”));
StringTokenizer
Breaks up a string into substrings
(tokens) separated by a specified
delimiter
Selected Methods
StringTokenizer(String str, String delim)
int countTokens()
String nextToken()
boolean hasMoreTokens()
StringTokenizer Example
StringTokenizer st;
String longstr = “This is the last slide”;
st = new StringTokenizer(longstr, “ ”);
int numwords = st.countTokens();
System.out.println(numwords);
String firstword = st.nextToken();
System.out.println(firstword);
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
Introduction to Databases
and JDBC
CS 21b
Crash Course in
Databases
(Relational) Database: set of tables
represents information
Table: columns (fields) and rows
(values)
SQL - Structured Query Language:
facilitates manipulation of data in a
database
Database Example
PRODUCT
Code Item
BB
Beyblade
ZD
Zoid
SF
Stickfas
Price
150.00
799.95
500.00
SALE
Num
001
002
003
004
Code
BB
ZD
BB
SF
Quantity
2
1
5
1
SQL Statements
To add a row:
INSERT INTO SALE VALUES(005,‘ZD’,2)
To retrieve a row:
(e.g., product name given a code)
SELECT ITEM FROM PRODUCT WHERE CODE = ‘BB’
To retrieve several rows:
(e.g., all details of all orders)
SELECT * FROM SALE
JDBC
Java Database Connectivity
Database Access Interface
provides access to a relational database
(by allowing SQL statements to be sent
and executed through a Java program)
JDBC package: set of Java classes that
facilitate this access (java.sql.*)
Comes with JDK (since 1.1)
JDBC Driver
Need a driver, specific to the DB product,
to mediate between JDBC and the
database
the driver is a Java class that needs to be
loaded first
Java Program
- load driver
- establish connection
- send SQL statements
Relational
DB
Management
System
JDBC-ODBC Bridge
Driver that interfaces with ODBC
(Object Database Connectivity--also an
access interface)
Easiest way to access databases
created by Microsoft products
register database as an ODBC data source
use JDBC-ODBC bridge as the JDBC driver
(included in JDK 1.2 distribution)
Key Classes in JDBC
Connection
Statement
need to create an instance of this class when
establishing a connection to the database
for issuing SQL statements
ResultSet (interface)
a ResultSet object represents the table returned
by an SQL select statement
Establishing a Connection
Use the getConnection() method
under the DriverManager class
String argument: "jdbc:driver:name”
returns a Connection object
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
// above line loads the jdbc-odbc driver
String dbname = “jdbc:odbc:MyDB”;
Connection c = Driver.getConnection(dbname);
Creating a
Statement Object
Execute the createStatement() method on
the Connection object
returns a Statement object
afterwards, run methods on the Statement
object to execute an SQL statement
Statement s = c.createStatement();
Methods of the
Statement Class
executeQuery()
requires a String argument (a select
statement)
returns a ResultSet object
executeUpdate()
requires a String argument (an insert,
update, or delete statement)
returns an int (row count, in most cases)
The ResultSet Interface
A ResultSet object represents the table
returned by the select statement sent
Navigation/retrieval methods
next(): moves to the next row (first row if
called for the first time), returns false if no
rows remain
getXXX methods return the value of a field
for the current row
get Method Example: getInt()
ResultSet rs;
rs = s.executeQuery(“SELECT * FROM ORDER”);
rs.next(); // gets the first row
// suppose the Orders table has an integer field
// called quantity
int myvar = rs.getInt(“Quantity”);
// if you knew that quantity is the 3rd field in the table
myvar = rs.getInt(3);
Exercise
Create a Microsoft Access Database
Add an ODBC data source
insert sample rows
use the Microsoft Access driver
associate with the created database
Create a Java program
use JDBC-ODBC bridge
create a loop that lists all rows of the table
Summary
JDBC allows you to write Java programs that
manipulate a database
A driver (often a separate product) is required
that facilitates access
Key classes: Connection, Statement, and
ResultSet
Other features: metadata, parameterized
statements, and stored-proc invocation