Title: Advanced Java Programming Eran Toch
1Tutorial Advanced Java Programming and
Database connection
- Eran Toch
- Methodologies in the Development of Information
Systems - November 2003
2Agenda
- Exceptions and Error Handling
- What is it and why do we need it?
- The try, catch, finally procedure
- Database Access with JDBC
- Installations
- Connecting and querying the database
- Complete example
- References
3Exceptions - Introduction
- Definition An exception is an event that occurs
during the execution of a program that disrupts
the normal flow of instructions. - Whats wrong with using the return value for
error handling? - Advantage 1 Separating Error Handling Code from
"Regular" Code - Advantage 2 Propagating Errors Up the Call Stack
- Advantage 3 Grouping Error Types and Error
Differentiation
4Exceptions Advantage 1
- Separating Error Handling Code from "Regular"
Code
errorCodeType readFile initialize errorCode
0 open the file if (theFileIsOpen)
determine the length of the file if
(gotTheFileLength) allocate that much
memory if (gotEnoughMemory)
read the file into memory if
(readFailed) errorCode -1
else errorCode
-2 . . .
readFile try open the file
determine its size allocate that much
memory read the file into memory
close the file catch (fileOpenFailed)
doSomething catch (sizeDeterminationF
ailed) doSomething catch
(memoryAllocationFailed) doSomething
catch (readFailed) doSomething
catch (fileCloseFailed) doSomething
Without Exception
With Exception
5The try Block
- try block
- A try statement must be accompanied by at least
one catch block or one finally block.
try System.out.println("Entering try
statement") out new PrintWriter(new
FileWriter("OutFile.txt")) for (int i 0 i size i) out.println("Value at " i " "
victor.elementAt(i))
6The catch Block
- catch block handles the exception
- Multiple catch blocks can be placed, each
handling a different type of exception
try . . . catch (ArrayIndexOutOfBoundsExcepti
on e) System.err.println("Caught
ArrayIndexOutOfBoundsException "
e.getMessage()) catch (IOException e)
System.err.println("Caught IOException "
e.getMessage())
7Catching Multiple Exceptions
- Java exceptions are Throwable objects
Throwable
Exception
MyException
MySpecificException1
MySpecificException2
- Catching MyException will catch both the
subclasses. Catching Exception will catch all
types of Exceptions
8Catching Multiple Exceptions contd
- Example The following catch block, will catch
all types of exceptions
catch (Exception e) System.err.println("Except
ion caught " e.getMessage())
9The finally Block
- We can never be sure that either the try block or
the finally block will be fully executed. - finally block code will always be executed
- Used frequently for cleanup processes.
finally if (out ! null)
System.out.println("Closing PrintWriter")
out.close() else System.out.println("
PrintWriter not open")
10Putting it All Together
public void writeList() PrintWriter out
null try System.out.println("Entering
try statement") out new PrintWriter(
new FileWriter("OutFile.txt")) for (int i
0 i i " " victor.elementAt(i)) catch
(ArrayIndexOutOfBoundsException e)
System.err.println("Caught ArrayIndexOutOfBoundsEx
ception " e.getMessage()) catch
(IOException e) System.err.println("Caught
IOException " e.getMessage()) finally
if (out ! null)
System.out.println("Closing PrintWriter")
out.close() else
System.out.println("PrintWriter not open")
11throw Statement
- All Java methods use the throw statement to throw
an exception - The method must declare that it might throw
something, by using the throws statement
public Object pop() throws EmptyStackException
Object obj if (size 0) throw new
EmptyStackException(exception text) obj
objectAt(size - 1) setObjectAt(size - 1,
null) size-- return obj
12Exceptions and JavaDoc
- Exception can be documented by Javadoc using the
_at_exception statement
/ regular javadoc text
_at_throwsExceptionIf the Driver was not found.
_at_throwsSQLExceptionIf the the DriverManager.
getConnection method returned an
error. / public void createConnection()throws
SQLException, Exception
13Agenda
- Exceptions and Error Handling
- What is it and why do we need it?
- The try, catch, finally procedure
- Database Access with JDBC
- Installations
- Connecting and querying the database
- Complete example
- References
14Database Connection - Overview
- Four stages
- Install and configure the database
- Download and configure the JDBC
- Create a connection to the database
- Access the database
- In this tutorial, examples will be based on
MySQL. The reference section include a link to
instructions for MS Access.
15Database Install
- Download the MySQL database fromhttp//www.mysql
.com/downloads/ - Install it
- Create a specific databasecreate database
mytest - Create a user accountgrant all on mytest. to
eran identified by 1234
16JDBC Install
- Download Connector/J fromhttp//www.mysql.com/do
wnloads/api-jdbc.html - Unzip it
- In order the library to be found, either
- Copy the .jar file toJAVA_HOME/jre/lib/ext
- Or, add a classpath to the JDBCC\ set
CLASSPATH\path\to\mysql-connector-java-version-
bin.jarCLASSPATH
17Accessing Database
- Load the driver
- Creating a connection object
- Create a statement object
- Execute an SQL query and get results using the
ResultSet object
18Example Database Management
mysql create database mytest Query OK, 1 row
affected (0.05 sec) mysql grant all on . to
eran_at_localhost identified by '1234' Query OK, 0
rows affected (0.14 sec) mysqlcreate table
phones (name varchar(255) not null unique key,
phone varchar(25) not null) mysqldescribe
phones -------------------------------------
----------- Field Type Null Key
Default Extra ---------------------------
--------------------- name varchar(255)
PRI phone
varchar(25)
------------------------------------------
------ mysql insert into phones values ('Eran
Toch', '972-4-9831894') Query OK, 1 row
affected (0.11 sec)
Creating the DB
Creating user account
Creating the phones table
Is everything alright? Lets see
Inserting some data
19Example Connection
import java.sql. public class SQLConnect
Connection conn null Statement stmt null
ResultSet rs null public SQLConnect()
public void createConnection() try
Class.forName("com.mysql.jdbc.Driver").newInstance
() catch (Exception E)
System.out.println(E) try conn
DriverManager.getConnection("jdbcmysql//loca
lhost/mytest?usertest masterpassword1234")
catch (SQLException E)
System.out.println(E)
Importing java.sql. that contains all the
classes we need
Connection, Statement and ResultSet are defined
as class variables
Dynamically loading the specific JDBC driver. The
runtime environment must know where the library
is located!
Connecting to the database using the url
20Example Locating Libraries
- If the following error message occursjava.lang.C
lassNotFoundException com.mysql.jdbc.Driverjava.
sql.SQLException No suitable driver - Then the driver was not found.
- For Eclipse, add it in the project properties
window - For runtime, add it to theclasspath
Project properties window in Eclipse
21Example Access and Query
Creating a statement
public String getPhones() String output ""
try stmt conn.createStatement() rs
stmt.executeQuery("SELECT FROM phones")
if (rs ! null) while (rs.next())
output rs.getString("phone") "\n"
catch (Exception E)
System.out.println(E.getMessage())
Creating a ResultSet, based on a SQL statement
Going through the ResultSet by using rs.next().
Remember you need to call the next method
before you start reading from the ResultSet
Reading a field from the ResultSet
22Example Cleaning off
finally if (rs ! null) try
rs.close() catch (SQLException
sqlEx) rs null if (stmt
! null) try stmt.close()
catch (SQLException sqlEx)
stmt null return output
Cleaning off is best done in the finally clause
Cleaning off ResultSet
Cleaning off Statement, after the ResultSet
public void closeConnection() if (conn !
null) try conn.close()
catch (SQLException sqlEx) conn null
Cleaning off the connection, in a different
method (why?)
23Example Test Client
public class Test public static void
main(String args) SQLConnect connect
new SQLConnect() connect.createConnection()
String allPhones connect.getPhones()
connect.closeConnection() System.out.println(
"phones") System.out.println(allPhones)
Output phones 972-4-9831894
24Agenda
- Exceptions and Error Handling
- What is it and why do we need it?
- The try, catch, finally procedure
- Database Access with JDBC
- Installations
- Connecting and querying the database
- Complete example
- References
25References
- Exception handling in the Java tutorialhttp//ja
va.sun.com/docs/books/tutorial/essential/exception
s/index.html - JDBC Tutorialhttp//java.sun.com/docs/books/tuto
rial/jdbc/ - MySQL Tutorialhttp//www.mysql.com/documentation
/mysql/bychapter/ - MySQL JDBC Connector/J Tutorialhttp//www.mysql.
com/documentation/connector-j/ - Using Microsoft Access with JDBChttp//www.javaw
orld.com/javaworld/javaqa/2000-09/03-qa-0922-acces
s.html