Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 7 Chapter 7 Java Database Connectivity using JSP 1 (IS 203) WebProgramming (IS 203) Web Programming.

Similar presentations


Presentation on theme: "Chapter 7 Chapter 7 Java Database Connectivity using JSP 1 (IS 203) WebProgramming (IS 203) Web Programming."— Presentation transcript:

1 Chapter 7 Chapter 7 Java Database Connectivity using JSP 1 (IS 203) WebProgramming (IS 203) Web Programming

2 2 Outlines Overview of JDBC technology JDBC drivers Seven basic steps in using JDBC Retrieving data from a ResultSet Using statement, prepared and callable statements Submitting multiple statements

3 3 Introduction to JDBC JDBC provides a standard library for accessing relational databases API standardizes Way to establish connection to database Approach to initiating queries Method to create stored (parameterized) queries The data structure of query result (table) Determining the number of columns Looking up metadata, etc. API does not standardize SQL syntax JDBC is not embedded SQL JDBC class located in java.sql package

4 4 JDBC consists of two parts: JDBC API, a purely Java-based API JDBC Driver Manager, which communicates with vendor-specific drivers that perform the real communication with the database. JDBC Drivers

5 5 JDBC Data Types

6 6 Seven Basic Steps in Using JDBC 1.Load the driver 2.Define the Connection URL 3.Establish the Connection 4.Create a Statement object 5.Execute a query 6.Process the results 7.Close the connection

7 7 JDBC: Details of Process 1.Load the driver try { Class.forName("connect.microsoft.MicrosoftDriver");// Access Class.forName("oracle.jdbc.driver.OracleDriver");// Oracle Class.forName("com.mysql.jdbc.Driver");//MySQL } catch { ClassNotFoundException cnfe) { out.println("Error loading driver:”+cnfe); }

8 8 JDBC: Details of Process(Cont.,) 2.Define the Connection URL String host = "dbhost.yourcompany.com"; String dbName = "someName“; int port = 1234; String oracleURL = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbName; String sybaseURL = "jdbc:sybase:Tds:" + host + ":" + port + ":" + "?SERVICENAME=" + dbName; String mySQLURL = "jdbc:mysql://" + host + ":" + port + “/" + dbName;

9 9 JDBC: Details of Process (cont.,) 3.Establish the Connection String username = "jay_debesee"; String password = "secret"; Connection connection = DriverManager.getConnection(oracleURL, username, password); 4.Create a Statement Statement statement = connection.createStatement();

10 10 JDBC: Details of Process (cont.,) 5.Execute a Query String query = "SELECT col1, col2, col3 FROM sometable"; ResultSet resultSet = statement.executeQuery(query); Note : For update, insert or delete use executeUpdate

11 11 JDBC: Details of Process (cont.,) 6.Process the Result while(resultSet.next()) { out.println(resultSet.getString(1) + " " + resultSet.getString(2) + " " + resultSet.getString(3)); } Note : First column has index 1, not 0. ResultSet provides various getXxx methods that take a column index or name and returns the data. 7.Close the Connection connection.close(); Note : As opening a connection is expensive, postpone this step if additional database operations are expected

12 12 ResultSet Overview A ResultSet contains the results of the SQL query Represented by a table with rows and columns In JDBC 1.0 you can only proceed forward through the rows using next Useful Methods All methods can throw a SQLException close Releases the JDBC and database resources The result set is automatically closed when the associated Statement object executes a new query getMetaDataObject Returns a ResultSetMetaData object containing information about the columns in the ResultSet

13 13 ResultSet (Cont.,) Useful Methods next Attempts to move to the next row in the ResultSet If successful true is returned; otherwise, false The first call to next positions the cursor a the first row findColumn Returns the corresponding integer value corresponding to the specified column name Column numbers in the result set do not necessarily map to the same column numbers in the database

14 14 ResultSet (Cont.,) Useful Methods getXxx Returns the value from the column specified by column name or column index as an Xxx Java type Returns 0 or null, if the value is a SQL NULL Legal getXxx types: wasNull Used to check if the last getXxx read was a SQL NULL double byte int Date String float short long Time Object

15 15 Using MetaData Idea From a ResultSet (the return type of executeQuery ), derive a ResultSetMetaData object Use that object to look up the number, names, and types of columns ResultSetMetaData answers the following questions: How many columns are in the result set? What is the name of a given column? Are the column names case sensitive? What is the data type of a specific column? What is the maximum character size of a column? Can you search on a given column?

16 16 Useful MetaData Methods getColumnCount Returns the number of columns in the result set getColumnDisplaySize Returns the maximum width of the specified column in characters getColumnName/getColumnLabel The getColumnName method returns the database name of the column The getColumnLabel method returns the suggested column label for printouts getColumnType Returns the SQL type for the column to compare against types in java.sql.Types

17 17 Useful MetaData Methods (Cont.,)  isNullable  Indicates whether storing a NULL in the column is legal  Compare the return value against ResultSet constants: columnNoNulls, columnNullable, columnNullableUnknown  isSearchable  Returns true or false if the column can be used in a WHERE clause  isReadOnly/isWritable  The isReadOnly method indicates if the column is definitely not writable  The isWritable method indicates whether it is possible for a write to succeed

18 18 Using Statement Overview Through the Statement object, SQL statements are sent to the database. Three types of statement objects are available: Statement for executing a simple SQL statements PreparedStatement for executing a precompiled SQL statement passing in parameters CallableStatement for executing a database stored procedure

19 19 Useful Statement Methods executeQuery Executes the SQL query and returns the data in a table (ResultSet) The resulting table may be empty but never null ResultSet results = statement.executeQuery("SELECT a, b FROM table"); executeUpdate Used to execute for INSERT, UPDATE or DELETE SQL statements The return is the number of rows that were affected in the database Supports Data Definition Language (DDL) statements CREATE TABLE, DROP TABLE and ALTER TABLE int rows = statement.executeUpdate("DELETE FROM EMPLOYEES" + "WHERE STATUS=0");

20 20 Useful Statement Methods (Cont.,) execute Generic method for executing stored procedures and prepared statements Rarely used (for multiple return result sets) The statement execution may or may not return a ResultSet (use statement.getResultSet). If the return value is true, two or more result sets were produced getMaxRows/setMaxRows Determines the number of rows a ResultSet may contain Unless explicitly set, the number of rows are unlimited (return value of 0) getQueryTimeout/setQueryTimeout Specifies the amount of a time a driver will wait for a STATEMENT to complete before throwing a SQLException

21 21 Prepared Statements (Precompiled Queries) Idea If you are going to execute similar SQL statements multiple times, using “prepared” (parameterized) statements can be more efficient  Create a statement in standard form that is sent to the database for compilation before actually being used  Each time you use it, you simply replace some of the marked parameters using the setXxx methods As PreparedStatement inherits from Statement the corresponding execute methods have no parameters execute() executeQuery() executeUpdate()

22 22 Useful Prepared Statement Methods  setXxx  Sets the indicated parameter (?) in the SQL statement to the value  clearParameters  Clears all set parameter values in the statement  Handling Servlet Data  Query data obtained from a user through an HTML form may have SQL or special characters that may require escape sequences  To handle the special characters, pass the string to the PreparedStatement setString method which will automatically escape the string as necessary

23 23 Callable Statements Idea Permit calls to a stored procedures in a database Advantage Syntax errors are caught a compile time and not a runtime Stored procedures execute much faster than dynamic SQL The programmer need to know only about the input and output parameters for the stored procedure, not the table structure or internal details of the stored procedure

24 24 Callable Statements (cont.,)  Stored Procedure Syntax  Procedure with no parameters { call procedure_name }  Procedure with input parameters { call procedure_name(?, ?,...) } CallableStatement statement = connection.prepareCall("{ call procedure(?, ?) }");  Output Parameters  Register the JDBC type of each output parameter through registerOutParameter before calling execute statement.registerOutParameter(n, Types.FLOAT);  Use getXxx to access stored procedure return values

25 25 Useful CallableStatement Methods CallableStatement inherits from PreparedStatement getXxx(int parameterIndex) Retrieves the JDBC output parameter at the specified index as the xxx Java type registerOutputParameter Binds indexed output parameter to a JDBC type Can also provide a scale parameter to specify the number of digits to the right of the decimal point for NUMERIC or DECIMAL JDBC types statement.registerOutParameter(2, Types.DECIMAL, 3);


Download ppt "Chapter 7 Chapter 7 Java Database Connectivity using JSP 1 (IS 203) WebProgramming (IS 203) Web Programming."

Similar presentations


Ads by Google