SlideShare a Scribd company logo
JDBC (Java Database Connectivity)
There are 4 different types of JDBC drivers: JDBC-ODBC Bridge drivers (follows ODBC standards)  Partly Java – Partly Native (this does not use any standards)  Pure Java – Net Protocol Drivers  Pure Java Drivers (also called Type4Drivers, most popular one)  Important Classes: DriverManager Driver Connection Statement ResultSet
1) How to get the database connection? There are two ways to get the database connection. 1) First is to  load the the Driver using Class.forName() and use the DriverManager.getConnection() . 2) Second is to  use the DataSource to get the connection .
Loading the driver : Getting the connection from DriverManager : Getting the connection from the DataSource: To make the data source we need to deploy the  *-ds.xml  file in the deploy directory of JBoss Application Server. You can find the sample  *-ds.xml  files for different databases in the  jboss-eap-4.3/jboss-as/docs/examples/jca  directory.  Class.forName( "DriverName" ); e.g.Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" ); Connection connection = DriverManager.getConnection( "jdbc:microsoft:sqlserver://127.0.0.1\\ABCD:1443;”  + “ DatabaseName=JDBCDB" , "username" ,  "password" );
Sample *-ds.xml files for postgresql database : <datasources> <local-tx-datasource> <use-java-context> false </use-java-context>   <jndi-name> PostgresDS </jndi-name> <connection-url> jdbc:postgresql://127.0.0.1:5432/ejb3db </connection-url> <!—- For ssl connection <connection-  url>jdbc:postgresql://127.0.0.1:5432/ejb3db?ssl=true&amp;sslfactory=org.postg  resql.ssl.NonValidatingFactory&amp;</connection-url>  --> <driver-class> org.postgresql.Driver </driver-class> <user-name> x </user-name> <password> y </password> <!-- sql to call when connection is created.  Can be anything, select 1 is valid for PostgreSQL <new-connection-sql>select 1</new-connection-sql>  --> <!--pooling parameters-->   <min-pool-size> 50 </min-pool-size> <max-pool-size> 80 </max-pool-size> <blocking-timeout-millis> 5000 </blocking-timeout-millis>   <idle-timeout-minutes> 1 </idle-timeout-minutes>   <!-- sql to call on an existing pooled connection when it is obtained from pool.  Can be anything, select 1 is valid for PostgreSQL <check-valid-connection-sql>select 1</check-valid-connection-sql> --> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> <metadata> <type-mapping> PostgreSQL 8.0 </type-mapping> </metadata> </local-tx-datasource> </datasources>
How to get Connection from the database? jndi.properties InitialContext initialContext =  new  InitialContext(); DataSource dataSource = (DataSource)   initialContext.lookup( &quot;PostgresDS&quot; ); Connection connection = dataSource.getConnection() java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=127.0.0.1:1099
2) Setting up Tables: Creating a Table: Creating JDBC Statements : executeQuery()   is used for select statements (DQL).   executeUpdate()   is used to create or modify tables (DDL and DML).   String createTableCoffees = &quot;CREATE TABLE COFFEES&quot; +  &quot; (COF_NAM VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT,&quot; +  &quot; SALES INTEGER, TOTAL INTEGER)&quot;;  Statement statement = connection.createStatement(); statement.executeUpdate(createTableCoffees);
Executing Statements : Entering Data into a Table : Getting Data from a Table : executeQuery( &quot;SELECT statement...&quot; )  executeUpdate( &quot;DDL and DML statements...&quot; )  Statement statement = connection.createStatement(); statement.executeUpdate(  &quot;INSERT INTO COFFEES &quot;  +  &quot;VALUES('Colombian', 101, 7.99, 0, 0&quot; );  ResultSet resultSet = statement.executeQuery( &quot;SELECT * FROM COFFEES&quot; );
3) Updating Tables: String query =  &quot;SELECT COF_NAME, SALES FROM COFFEES “  + &quot; WHERE COF_NAME LIKE 'Colombian'&quot; ; ResultSet resultSet = statement.executeQuery(query); while(rs.next()){ String s = resultSet.getString( &quot;COF_NAME&quot; );  int n = resultSet.getInt( &quot;SALES&quot; );  System.out.println(n +  &quot; ponds of &quot;  + s +  &quot; sold this week.&quot; ); } String updateString =  &quot;UPDATE COFFEES &quot;  +  &quot;SET TOTAL = TOTAL + 75 &quot;  +  &quot;WHERE COF_NAME LIKE 'Colombian'&quot; ; statement.executeUpdate(updateString);  String query =  &quot;SELECT COF_NAME, TOTAL FROM COFFEES&quot;  +  &quot;WHERE COF_NAME LIKE 'Colombian'&quot; ;  ResultSet resultSet = statment.executeQuery(query); while(rs.next()) {  String s = rs.getString(1);  int n = rs.getInt(2);  System.out.println(n +  &quot; ponds of &quot;  + s +  &quot; sold till date.&quot; );  }
4) Using  PreparedStatement : When to use  PreparedStatment ? If you want to execute a Statement Object many times, it will normally reduce execution time to use a PreparedStatement object instead. The main feature of a PreparedStatement object is that, unlike a Statement object it is given an SQL statement when it is created. The advantage of this is that in most cases, the SQL statement will be sent to the DBMS right away, where it will be compiled. As a result the PreparedStatement object contains not just an SQL statement, but an SQL statement that has been precompiled. This means that when the PreparedStatement is executed, the DBMS can just run the PreparedStatemen’s SQL statement without having to compile it first. Although PreparedStatement objects can be used for SQL statements with no parameters, you will probably use them most often for SQL statements that take parameters. The advantage of using SQL statements that take parameters is that you can use the same statements and supply it with different values each time you execute it.
Creating a PreparedStatement Object: Supplying values for PreparedStatement Parameters: Code Fragment I: Code Fragment II: PreparedStatement updateSales = connection.preparedStatement( &quot;UPDATE COFFEES SET SALES = ? WHERE COF_NAME&quot; +  &quot; LIKE ? &quot; );   String updateString =  &quot;UPDATE COFFEES SET SALES=75 &quot;  +  &quot; WHERE COF_NAME LIKE 'Colombian'&quot; ; statement.executeUpdate(updateString);  PreparedStatement updateSales =  connection.preparedStatement(  &quot;UPDATE COFFEES SET SALES=? &quot;  +  &quot;WHERE COF_NAME LIKE ? &quot; ); updateSales.setInt(1, 75);  updateSales.setString(2,  &quot;Colombian&quot; ); updateSales.executeUpdate();
Note:  Once a parameter has been set with a value, it will retain that value until it is reset to another value or the method  clearParameters  is called.  Using a loop to set values: updateSales.setInt(1, 100); updateSales.setString(2,  &quot;French_Roast&quot; ); updateSales.executeUpdate(); updateSales.setString(2,  &quot;Espresso&quot; ); updateSales.executeUpdate();  PreparedStatement updateSales; String updateString =  &quot;update COFFEES &quot; +  &quot; set SALES = ? where COF_NAME like ?&quot; ; updateSales = con.preparedStatement(updateString); int [] salesForWeek = {175, 150, 60, 155, 90}; String [] coffees = ( &quot;Colombian&quot; ,  &quot;French_Roast&quot; ,  &quot;Colombian_Decaf&quot; ,  &quot;French_Roast_Decaf&quot; ); int len = coffees.length; for(int i=0; I < len; i++) {  updateSales.setInt(1, salesForWeek[i]); updateSales.setString(2, coffees[i]); updateSales.executeUpdate(); }
Return values for the method  executeUpdate : * executeQuery  returns a ResultSet object containing the results of the query sent to the DBMS, the return value for  executeUpdate  is an int that indicates how many rows of a table were updated.  When the method executeUpdate is used to execute a DDL statement, such as in creating a table, it returns the int 0.  Note that when the return value for executeUpdate is 0, it can mean one of two things: 1) the statement executed was an update statement that affected zero rows, or 2) the statement executed was a DDL statement.  updateSales.setInt(1, 50); updateSales.setString(2,  &quot;Espresso&quot; ); int  n = updateSales.executeUpdate(); // n = 1 because one row had a change in it. int  n = executeUpdate(createTableCoffees);  // n = 0
5) Using Joins: String createSUPPLIERS =  &quot;create table SUPPLIERS  &quot;  +  &quot;(SUP_ID INTEGER, SUP_NAME VARCHAR(40), &quot;  +  &quot;STREET VARCHAR(40), CITY VARCHAR(20), &quot;  + &quot;STATE CHAR(2), ZIP CHAR(5))&quot; ; statement.executeUpdate(createSUPPLIERS); statement.executeUpdate( &quot;insert int SUPPLIER values (101,  &quot;  + &quot;'Acme, Inc.', '99 Market Street', 'Groundsville', &quot;  + &quot;'CA', '95199'&quot; ); statement.executeUpdate( &quot;insert int SUPPLIERS values (49, &quot;  + &quot;'Superior Coffee', '1 Party Place', 'Mendocino', 'CA' &quot;   + &quot;'95460'&quot; ); statement.executeUpdate( &quot;Insert into SUPPLIERS value(150, &quot;  + &quot;'The High Ground', '100 Coffee Lane', 'Meadows', 'CA‘,  '93966'&quot; ; ResultSet rs = statement.executeQuery( &quot;select * from SUPPLIERS&quot; ); String query =  &quot;SELECT COFFEES.COF_NAME &quot;  + &quot;FROM COFFEES, SUPPLIERS &quot;  + &quot;WHERE SUPPLIERS.SUP_NAME LIKE 'Acme, Inc.' &quot;  + &quot;and SUPPLIER_ID = COFFEES.SUP_ID&quot; ; ResultSet rs = statement.executeQuery(query); System.out.println( &quot;Coffees bought from Acme, Inc.: &quot; ); while(rs.next()) { String coffeeName = rs.getString( &quot;COF_NAME&quot; );  System.out.println( &quot;  &quot;  + coffeeName); }
6) Using Transactions: A transaction is a set of one or more statements that are executed together as a unit, so either all of the statements are executed or none of the statements is executed.  Disabling Auto-Commit Mode where connection is an active connection.  Committing a Transaction Once auto-commit mode is disabled, no SQL statements will be committed until you call the method commit explicitly.  connection.setAutoCommit( false );  connection.setAutoCommit( false ); PreparedStatement updateSales =  connection.preparedStatment(  &quot;UPDATE COFFEES SET TOTAL = TOTAL + &quot;  +  &quot; ? WHERE COF_NAME LIKE ?&quot; ); updateTotal.setInt(1, 50);  updateTotal.setString(2,  &quot;Colombian&quot; ); updateTotal.executeUpdate();  connection.commit();  connnection.setAutoCommit( true );
Using Transaction to Preserve Data Integrity Transaction isolation levels 1) int TRANSACTION_NONE = 0; 2) int TRANSACTION_READ_UNCOMMITTED = 1; 3) int TRANSACTION_READ_COMMITTED = 2; 4) int TRANSACTION_REPEATABLE_READ = 4; 5) int TRANSACTION_SERIALIZABLE = 8; When to call method  rollback ? If you are trying to execute one or more statements in a transaction and get an  SQLException , you should call the method rollback to abort the transaction and start the transaction all over again.  void  setTransactionIsolation( int  level)  throws   SQLException ;  int  getTransactionIsolation()  throws   SQLException ;
7) Using Stored Procedures: In SQL In Java (JDBC) Create procedure SHOW_SUPPLIERS As Select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME  from SUPPLIERS, COFFEES where SUPPLIERS.SUP_ID = COFFEES.SUP_ID Order by SUP_NAME String createProcedure = “Create procedure SHOW_SUPPLIERS” + “ as “ + “ select SUPPLIER.SUP_NAME, COFFEES.COF_NAME ” + “ from SUPPLIERS, COFFEES ” +  “ where SUPPLIER.SUP_ID = COFFEES.SUP_ID ” + “ order by SUP_NAME”; Statement stmt = con.createStatement(); Stmt.executeUpdate(createProcedure);
Steps Putting code in a class definition. Importing classes to make them visible import java.sql.*; Using the main method. Using try and catch blocks. Retrieving Exceptions. 8) Creating Complete JDBC Applications:
try  { - - - - - - }  catch  ( SQLException  ex) { System .err.println( “SQLException: ”  + ex.getMessage()); } try  { Class.forName( “myDriverClassName” ); }  catch  ( ClassNotFoundException  ex) { System .err.println( “ClassNotFoundException: ”  + ex.getMessage()); }
Catching Exceptions try  { - - - - - - }  catch  ( SQLException  ex) { System .err.println( “SQLException Caught”);   while (ex != null){   System .out.println( “Message: “ + ex.getMessage());    System .out.println( “SQLState: “ + ex.getSQLState());    System .out.println( “ErrorCode: “ + ex.getErrorCode());  ex = ex.getNextException(); System .out.println( “ ” ); } }
Retrieving Warnings SQLWarning  objects are a subclass of  SQLException  that deal with database access warnings. Warnings do not stop the execution of an application, as exceptions do; they simply alert the user that something did not happen as planned. A warning can be reported on a  # a connection object # a statement object (including  PreparedStatment  and  CallableStatement  objects) # a  ResultSet  object Each of these classes have a  getWarnings  method, which you mush invoke in order to see the first warning reported on the calling object. If  getWarnings  returns a warning, you can call the  SQLWarning  method  getNextWarning  on it to get any additional warnings. Executing a statement automatically clears the warnings from the previous statement, so they do not build up. This means, however that if you want to retrieve warnings reported on a statement you must do so before you execute another statement.
Example Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( “ Select COF_NAME from COFFEES” ); while(rs.next) { String CoffeName = rs.getString( “COF_NAME” ); System .out.println( “ Coffees available at the Coffee Break: ” ); System .out.println( “ ”  + coffeeName); SQLWarning warning = stmt.getWarnings(); if(warning != null) { System.out.println( “—Warning-” ); while(warning != null){ System .out.println( “Message: ”  + warning.getMessage()); System .out.println( “SQLState: ”  + warning.getSQLState()); System .out.println( “Vendor Eror Code: ”  +  warning.getErrorCode()); warning = warning.getNextWarning(); } } ---
--- SQLWarning warn = rs.getWarnings(); if(warning != null) { System.out.println(“-- Warning --”); while(warn != null) { System.out.println(“Message: ” + warn.getMessage()); System.out.println(“SQLState: ” + warn.getSQLState()); System.out.println(“Vendor Error Code:” +  warn.getErrorCode()); warn = warn.getNextWarning(); } } }
The End

More Related Content

PPSX
JDBC: java DataBase connectivity
Tanmoy Barman
 
PPT
JDBC – Java Database Connectivity
Information Technology
 
PPTX
SWING USING JAVA WITH VARIOUS COMPONENTS
bharathiv53
 
PPTX
Java Spring Framework
Mehul Jariwala
 
PPT
Jdbc ppt
Vikas Jagtap
 
PPTX
Java swing
Apurbo Datta
 
JDBC: java DataBase connectivity
Tanmoy Barman
 
JDBC – Java Database Connectivity
Information Technology
 
SWING USING JAVA WITH VARIOUS COMPONENTS
bharathiv53
 
Java Spring Framework
Mehul Jariwala
 
Jdbc ppt
Vikas Jagtap
 
Java swing
Apurbo Datta
 

What's hot (20)

PPTX
Introduction to Spring Framework
Serhat Can
 
PPT
Looping statements in Java
Jin Castor
 
PPTX
Java 8 presentation
Van Huong
 
PPS
Jdbc architecture and driver types ppt
kamal kotecha
 
PPT
Java Persistence API (JPA) Step By Step
Guo Albert
 
PPTX
Java Server Pages(jsp)
Manisha Keim
 
PPTX
Java Database Connectivity (JDBC)
Pooja Talreja
 
PPT
Java: GUI
Tareq Hasan
 
PPTX
Java database connectivity with MySql
Dhyey Dattani
 
PDF
JDBC : Java Database Connectivity
DevAdnani
 
PDF
Jdbc connectivity in java
Muthukumaran Subramanian
 
PPT
Spring Framework
nomykk
 
PPT
JDBC
Sunil OS
 
PPT
Jsp/Servlet
Sunil OS
 
PDF
Spring Boot
HongSeong Jeon
 
PPTX
servlet in java
sowfi
 
PPTX
Java History
Prionto Abdullah
 
PPTX
JAVA AWT
shanmuga rajan
 
PDF
Java 8 features
NexThoughts Technologies
 
PPT
Java database connectivity
Vaishali Modi
 
Introduction to Spring Framework
Serhat Can
 
Looping statements in Java
Jin Castor
 
Java 8 presentation
Van Huong
 
Jdbc architecture and driver types ppt
kamal kotecha
 
Java Persistence API (JPA) Step By Step
Guo Albert
 
Java Server Pages(jsp)
Manisha Keim
 
Java Database Connectivity (JDBC)
Pooja Talreja
 
Java: GUI
Tareq Hasan
 
Java database connectivity with MySql
Dhyey Dattani
 
JDBC : Java Database Connectivity
DevAdnani
 
Jdbc connectivity in java
Muthukumaran Subramanian
 
Spring Framework
nomykk
 
JDBC
Sunil OS
 
Jsp/Servlet
Sunil OS
 
Spring Boot
HongSeong Jeon
 
servlet in java
sowfi
 
Java History
Prionto Abdullah
 
JAVA AWT
shanmuga rajan
 
Java 8 features
NexThoughts Technologies
 
Java database connectivity
Vaishali Modi
 
Ad

Viewers also liked (20)

PPT
JDBC Tutorial
Information Technology
 
PPT
Java Database Connectivity
backdoor
 
PPT
Java Server Pages
BG Java EE Course
 
PPT
Jsp ppt
Vikas Jagtap
 
PDF
Scrum sprint structure workshop by Nermina Durmić
Bosnia Agile
 
PPS
Jdbc example program with access and MySql
kamal kotecha
 
KEY
JDBC Basics (In 20 Minutes Flat)
Craig Dickson
 
PPTX
JDBC ppt
Rohit Jain
 
PPTX
Database Access With JDBC
Dharani Kumar Madduri
 
PDF
Java Web Programming [4/9] : JSP Basic
IMC Institute
 
PPTX
Ordbms
ramandeep brar
 
PPT
Software Quality Assurance
university of education,Lahore
 
PPT
Verification and Validation in Software Engineering SE19
koolkampus
 
ODP
Hibernate Developer Reference
Muthuselvam RS
 
PPT
Java Servlets
Nitin Pai
 
PPT
Black box & white-box testing technique
SivaprasanthRentala1975
 
JDBC Tutorial
Information Technology
 
Java Database Connectivity
backdoor
 
Java Server Pages
BG Java EE Course
 
Jsp ppt
Vikas Jagtap
 
Scrum sprint structure workshop by Nermina Durmić
Bosnia Agile
 
Jdbc example program with access and MySql
kamal kotecha
 
JDBC Basics (In 20 Minutes Flat)
Craig Dickson
 
JDBC ppt
Rohit Jain
 
Database Access With JDBC
Dharani Kumar Madduri
 
Java Web Programming [4/9] : JSP Basic
IMC Institute
 
Ordbms
ramandeep brar
 
Software Quality Assurance
university of education,Lahore
 
Verification and Validation in Software Engineering SE19
koolkampus
 
Hibernate Developer Reference
Muthuselvam RS
 
Java Servlets
Nitin Pai
 
Black box & white-box testing technique
SivaprasanthRentala1975
 
Ad

Similar to JDBC Java Database Connectivity (20)

PPT
30 5 Database Jdbc
phanleson
 
PPT
Data Access with JDBC
BG Java EE Course
 
PPT
jdbc
vikram singh
 
PPT
Testing persistence in PHP with DbUnit
Peter Wilcsinszky
 
PPT
JDBC for CSQL Database
jitendral
 
PPT
ADO.Net Improvements in .Net 2.0
David Truxall
 
PPT
Advanced PHPUnit Testing
Mike Lively
 
PPT
Jsp And Jdbc
Roy Antony Arnold G
 
PPT
JDBC Connecticity.ppt
Swapnil Kale
 
PPT
Corephpcomponentpresentation 1211425966721657-8
PrinceGuru MS
 
PPT
Core Php Component Presentation
John Coonen
 
PPT
Executing Sql Commands
phanleson
 
PPT
Executing Sql Commands
leminhvuong
 
PPT
Jdbc
smvdurajesh
 
PPT
Dat402
ssa2010
 
PPT
Advanced dot net
ssa2010
 
DOCX
My java file
Anamika Chauhan
 
PPTX
WCF - In a Week
gnanaarunganesh
 
PPT
My sql with querys
NIRMAL FELIX
 
PPT
Create a web-app with Cgi Appplication
olegmmiller
 
30 5 Database Jdbc
phanleson
 
Data Access with JDBC
BG Java EE Course
 
jdbc
vikram singh
 
Testing persistence in PHP with DbUnit
Peter Wilcsinszky
 
JDBC for CSQL Database
jitendral
 
ADO.Net Improvements in .Net 2.0
David Truxall
 
Advanced PHPUnit Testing
Mike Lively
 
Jsp And Jdbc
Roy Antony Arnold G
 
JDBC Connecticity.ppt
Swapnil Kale
 
Corephpcomponentpresentation 1211425966721657-8
PrinceGuru MS
 
Core Php Component Presentation
John Coonen
 
Executing Sql Commands
phanleson
 
Executing Sql Commands
leminhvuong
 
Jdbc
smvdurajesh
 
Dat402
ssa2010
 
Advanced dot net
ssa2010
 
My java file
Anamika Chauhan
 
WCF - In a Week
gnanaarunganesh
 
My sql with querys
NIRMAL FELIX
 
Create a web-app with Cgi Appplication
olegmmiller
 

More from Ranjan Kumar (20)

PPT
Introduction to java ee
Ranjan Kumar
 
PPT
Fantastic life views ons
Ranjan Kumar
 
PPS
Lessons on Life
Ranjan Kumar
 
PPS
Story does not End here
Ranjan Kumar
 
PPS
Whata Split Second Looks Like
Ranjan Kumar
 
PPS
Friendship so Sweet
Ranjan Kumar
 
PPS
Dedicate Time
Ranjan Kumar
 
PPS
Paradise on Earth
Ranjan Kumar
 
PPS
Bolivian Highway
Ranjan Kumar
 
PPS
Chinese Proverb
Ranjan Kumar
 
PPS
Warren Buffet
Ranjan Kumar
 
PPS
Dear Son Dear Daughter
Ranjan Kumar
 
PPS
Jara Sochiye
Ranjan Kumar
 
PPS
Blue Beauty
Ranjan Kumar
 
PPS
Alaska Railway Routes
Ranjan Kumar
 
PPS
Poison that Kills the Dreams
Ranjan Kumar
 
PPS
Horrible Jobs
Ranjan Kumar
 
PPS
Best Aviation Photography
Ranjan Kumar
 
PPSX
Role of Attitude
Ranjan Kumar
 
PPS
45 Lesons in Life
Ranjan Kumar
 
Introduction to java ee
Ranjan Kumar
 
Fantastic life views ons
Ranjan Kumar
 
Lessons on Life
Ranjan Kumar
 
Story does not End here
Ranjan Kumar
 
Whata Split Second Looks Like
Ranjan Kumar
 
Friendship so Sweet
Ranjan Kumar
 
Dedicate Time
Ranjan Kumar
 
Paradise on Earth
Ranjan Kumar
 
Bolivian Highway
Ranjan Kumar
 
Chinese Proverb
Ranjan Kumar
 
Warren Buffet
Ranjan Kumar
 
Dear Son Dear Daughter
Ranjan Kumar
 
Jara Sochiye
Ranjan Kumar
 
Blue Beauty
Ranjan Kumar
 
Alaska Railway Routes
Ranjan Kumar
 
Poison that Kills the Dreams
Ranjan Kumar
 
Horrible Jobs
Ranjan Kumar
 
Best Aviation Photography
Ranjan Kumar
 
Role of Attitude
Ranjan Kumar
 
45 Lesons in Life
Ranjan Kumar
 

Recently uploaded (20)

PDF
Software Development Methodologies in 2025
KodekX
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
Software Development Company | KodekX
KodekX
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PPTX
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PPTX
Comunidade Salesforce SĂŁo Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira JĂșnior
 
PDF
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
PDF
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PPTX
Stamford - Community User Group Leaders_ Agentblazer Status, AI Sustainabilit...
Amol Dixit
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Software Development Methodologies in 2025
KodekX
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
Software Development Company | KodekX
KodekX
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Comunidade Salesforce SĂŁo Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira JĂșnior
 
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
Stamford - Community User Group Leaders_ Agentblazer Status, AI Sustainabilit...
Amol Dixit
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 

JDBC Java Database Connectivity

  • 1. JDBC (Java Database Connectivity)
  • 2. There are 4 different types of JDBC drivers: JDBC-ODBC Bridge drivers (follows ODBC standards) Partly Java – Partly Native (this does not use any standards) Pure Java – Net Protocol Drivers Pure Java Drivers (also called Type4Drivers, most popular one) Important Classes: DriverManager Driver Connection Statement ResultSet
  • 3. 1) How to get the database connection? There are two ways to get the database connection. 1) First is to load the the Driver using Class.forName() and use the DriverManager.getConnection() . 2) Second is to use the DataSource to get the connection .
  • 4. Loading the driver : Getting the connection from DriverManager : Getting the connection from the DataSource: To make the data source we need to deploy the *-ds.xml file in the deploy directory of JBoss Application Server. You can find the sample *-ds.xml files for different databases in the jboss-eap-4.3/jboss-as/docs/examples/jca directory. Class.forName( &quot;DriverName&quot; ); e.g.Class.forName( &quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot; ); Connection connection = DriverManager.getConnection( &quot;jdbc:microsoft:sqlserver://127.0.0.1\\ABCD:1443;” + “ DatabaseName=JDBCDB&quot; , &quot;username&quot; , &quot;password&quot; );
  • 5. Sample *-ds.xml files for postgresql database : <datasources> <local-tx-datasource> <use-java-context> false </use-java-context> <jndi-name> PostgresDS </jndi-name> <connection-url> jdbc:postgresql://127.0.0.1:5432/ejb3db </connection-url> <!—- For ssl connection <connection- url>jdbc:postgresql://127.0.0.1:5432/ejb3db?ssl=true&amp;sslfactory=org.postg resql.ssl.NonValidatingFactory&amp;</connection-url> --> <driver-class> org.postgresql.Driver </driver-class> <user-name> x </user-name> <password> y </password> <!-- sql to call when connection is created. Can be anything, select 1 is valid for PostgreSQL <new-connection-sql>select 1</new-connection-sql> --> <!--pooling parameters--> <min-pool-size> 50 </min-pool-size> <max-pool-size> 80 </max-pool-size> <blocking-timeout-millis> 5000 </blocking-timeout-millis> <idle-timeout-minutes> 1 </idle-timeout-minutes> <!-- sql to call on an existing pooled connection when it is obtained from pool. Can be anything, select 1 is valid for PostgreSQL <check-valid-connection-sql>select 1</check-valid-connection-sql> --> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> <metadata> <type-mapping> PostgreSQL 8.0 </type-mapping> </metadata> </local-tx-datasource> </datasources>
  • 6. How to get Connection from the database? jndi.properties InitialContext initialContext = new InitialContext(); DataSource dataSource = (DataSource) initialContext.lookup( &quot;PostgresDS&quot; ); Connection connection = dataSource.getConnection() java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=127.0.0.1:1099
  • 7. 2) Setting up Tables: Creating a Table: Creating JDBC Statements : executeQuery() is used for select statements (DQL). executeUpdate() is used to create or modify tables (DDL and DML). String createTableCoffees = &quot;CREATE TABLE COFFEES&quot; + &quot; (COF_NAM VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT,&quot; + &quot; SALES INTEGER, TOTAL INTEGER)&quot;; Statement statement = connection.createStatement(); statement.executeUpdate(createTableCoffees);
  • 8. Executing Statements : Entering Data into a Table : Getting Data from a Table : executeQuery( &quot;SELECT statement...&quot; ) executeUpdate( &quot;DDL and DML statements...&quot; ) Statement statement = connection.createStatement(); statement.executeUpdate( &quot;INSERT INTO COFFEES &quot; + &quot;VALUES('Colombian', 101, 7.99, 0, 0&quot; ); ResultSet resultSet = statement.executeQuery( &quot;SELECT * FROM COFFEES&quot; );
  • 9. 3) Updating Tables: String query = &quot;SELECT COF_NAME, SALES FROM COFFEES “ + &quot; WHERE COF_NAME LIKE 'Colombian'&quot; ; ResultSet resultSet = statement.executeQuery(query); while(rs.next()){ String s = resultSet.getString( &quot;COF_NAME&quot; ); int n = resultSet.getInt( &quot;SALES&quot; ); System.out.println(n + &quot; ponds of &quot; + s + &quot; sold this week.&quot; ); } String updateString = &quot;UPDATE COFFEES &quot; + &quot;SET TOTAL = TOTAL + 75 &quot; + &quot;WHERE COF_NAME LIKE 'Colombian'&quot; ; statement.executeUpdate(updateString); String query = &quot;SELECT COF_NAME, TOTAL FROM COFFEES&quot; + &quot;WHERE COF_NAME LIKE 'Colombian'&quot; ; ResultSet resultSet = statment.executeQuery(query); while(rs.next()) { String s = rs.getString(1); int n = rs.getInt(2); System.out.println(n + &quot; ponds of &quot; + s + &quot; sold till date.&quot; ); }
  • 10. 4) Using PreparedStatement : When to use PreparedStatment ? If you want to execute a Statement Object many times, it will normally reduce execution time to use a PreparedStatement object instead. The main feature of a PreparedStatement object is that, unlike a Statement object it is given an SQL statement when it is created. The advantage of this is that in most cases, the SQL statement will be sent to the DBMS right away, where it will be compiled. As a result the PreparedStatement object contains not just an SQL statement, but an SQL statement that has been precompiled. This means that when the PreparedStatement is executed, the DBMS can just run the PreparedStatemen’s SQL statement without having to compile it first. Although PreparedStatement objects can be used for SQL statements with no parameters, you will probably use them most often for SQL statements that take parameters. The advantage of using SQL statements that take parameters is that you can use the same statements and supply it with different values each time you execute it.
  • 11. Creating a PreparedStatement Object: Supplying values for PreparedStatement Parameters: Code Fragment I: Code Fragment II: PreparedStatement updateSales = connection.preparedStatement( &quot;UPDATE COFFEES SET SALES = ? WHERE COF_NAME&quot; + &quot; LIKE ? &quot; ); String updateString = &quot;UPDATE COFFEES SET SALES=75 &quot; + &quot; WHERE COF_NAME LIKE 'Colombian'&quot; ; statement.executeUpdate(updateString); PreparedStatement updateSales = connection.preparedStatement( &quot;UPDATE COFFEES SET SALES=? &quot; + &quot;WHERE COF_NAME LIKE ? &quot; ); updateSales.setInt(1, 75); updateSales.setString(2, &quot;Colombian&quot; ); updateSales.executeUpdate();
  • 12. Note: Once a parameter has been set with a value, it will retain that value until it is reset to another value or the method clearParameters is called. Using a loop to set values: updateSales.setInt(1, 100); updateSales.setString(2, &quot;French_Roast&quot; ); updateSales.executeUpdate(); updateSales.setString(2, &quot;Espresso&quot; ); updateSales.executeUpdate(); PreparedStatement updateSales; String updateString = &quot;update COFFEES &quot; + &quot; set SALES = ? where COF_NAME like ?&quot; ; updateSales = con.preparedStatement(updateString); int [] salesForWeek = {175, 150, 60, 155, 90}; String [] coffees = ( &quot;Colombian&quot; , &quot;French_Roast&quot; , &quot;Colombian_Decaf&quot; , &quot;French_Roast_Decaf&quot; ); int len = coffees.length; for(int i=0; I < len; i++) { updateSales.setInt(1, salesForWeek[i]); updateSales.setString(2, coffees[i]); updateSales.executeUpdate(); }
  • 13. Return values for the method executeUpdate : * executeQuery returns a ResultSet object containing the results of the query sent to the DBMS, the return value for executeUpdate is an int that indicates how many rows of a table were updated. When the method executeUpdate is used to execute a DDL statement, such as in creating a table, it returns the int 0. Note that when the return value for executeUpdate is 0, it can mean one of two things: 1) the statement executed was an update statement that affected zero rows, or 2) the statement executed was a DDL statement. updateSales.setInt(1, 50); updateSales.setString(2, &quot;Espresso&quot; ); int n = updateSales.executeUpdate(); // n = 1 because one row had a change in it. int n = executeUpdate(createTableCoffees); // n = 0
  • 14. 5) Using Joins: String createSUPPLIERS = &quot;create table SUPPLIERS &quot; + &quot;(SUP_ID INTEGER, SUP_NAME VARCHAR(40), &quot; + &quot;STREET VARCHAR(40), CITY VARCHAR(20), &quot; + &quot;STATE CHAR(2), ZIP CHAR(5))&quot; ; statement.executeUpdate(createSUPPLIERS); statement.executeUpdate( &quot;insert int SUPPLIER values (101, &quot; + &quot;'Acme, Inc.', '99 Market Street', 'Groundsville', &quot; + &quot;'CA', '95199'&quot; ); statement.executeUpdate( &quot;insert int SUPPLIERS values (49, &quot; + &quot;'Superior Coffee', '1 Party Place', 'Mendocino', 'CA' &quot; + &quot;'95460'&quot; ); statement.executeUpdate( &quot;Insert into SUPPLIERS value(150, &quot; + &quot;'The High Ground', '100 Coffee Lane', 'Meadows', 'CA‘, '93966'&quot; ; ResultSet rs = statement.executeQuery( &quot;select * from SUPPLIERS&quot; ); String query = &quot;SELECT COFFEES.COF_NAME &quot; + &quot;FROM COFFEES, SUPPLIERS &quot; + &quot;WHERE SUPPLIERS.SUP_NAME LIKE 'Acme, Inc.' &quot; + &quot;and SUPPLIER_ID = COFFEES.SUP_ID&quot; ; ResultSet rs = statement.executeQuery(query); System.out.println( &quot;Coffees bought from Acme, Inc.: &quot; ); while(rs.next()) { String coffeeName = rs.getString( &quot;COF_NAME&quot; ); System.out.println( &quot; &quot; + coffeeName); }
  • 15. 6) Using Transactions: A transaction is a set of one or more statements that are executed together as a unit, so either all of the statements are executed or none of the statements is executed. Disabling Auto-Commit Mode where connection is an active connection. Committing a Transaction Once auto-commit mode is disabled, no SQL statements will be committed until you call the method commit explicitly. connection.setAutoCommit( false ); connection.setAutoCommit( false ); PreparedStatement updateSales = connection.preparedStatment( &quot;UPDATE COFFEES SET TOTAL = TOTAL + &quot; + &quot; ? WHERE COF_NAME LIKE ?&quot; ); updateTotal.setInt(1, 50); updateTotal.setString(2, &quot;Colombian&quot; ); updateTotal.executeUpdate(); connection.commit(); connnection.setAutoCommit( true );
  • 16. Using Transaction to Preserve Data Integrity Transaction isolation levels 1) int TRANSACTION_NONE = 0; 2) int TRANSACTION_READ_UNCOMMITTED = 1; 3) int TRANSACTION_READ_COMMITTED = 2; 4) int TRANSACTION_REPEATABLE_READ = 4; 5) int TRANSACTION_SERIALIZABLE = 8; When to call method rollback ? If you are trying to execute one or more statements in a transaction and get an SQLException , you should call the method rollback to abort the transaction and start the transaction all over again. void setTransactionIsolation( int level) throws SQLException ; int getTransactionIsolation() throws SQLException ;
  • 17. 7) Using Stored Procedures: In SQL In Java (JDBC) Create procedure SHOW_SUPPLIERS As Select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME from SUPPLIERS, COFFEES where SUPPLIERS.SUP_ID = COFFEES.SUP_ID Order by SUP_NAME String createProcedure = “Create procedure SHOW_SUPPLIERS” + “ as “ + “ select SUPPLIER.SUP_NAME, COFFEES.COF_NAME ” + “ from SUPPLIERS, COFFEES ” + “ where SUPPLIER.SUP_ID = COFFEES.SUP_ID ” + “ order by SUP_NAME”; Statement stmt = con.createStatement(); Stmt.executeUpdate(createProcedure);
  • 18. Steps Putting code in a class definition. Importing classes to make them visible import java.sql.*; Using the main method. Using try and catch blocks. Retrieving Exceptions. 8) Creating Complete JDBC Applications:
  • 19. try { - - - - - - } catch ( SQLException ex) { System .err.println( “SQLException: ” + ex.getMessage()); } try { Class.forName( “myDriverClassName” ); } catch ( ClassNotFoundException ex) { System .err.println( “ClassNotFoundException: ” + ex.getMessage()); }
  • 20. Catching Exceptions try { - - - - - - } catch ( SQLException ex) { System .err.println( “SQLException Caught”); while (ex != null){ System .out.println( “Message: “ + ex.getMessage()); System .out.println( “SQLState: “ + ex.getSQLState()); System .out.println( “ErrorCode: “ + ex.getErrorCode()); ex = ex.getNextException(); System .out.println( “ ” ); } }
  • 21. Retrieving Warnings SQLWarning objects are a subclass of SQLException that deal with database access warnings. Warnings do not stop the execution of an application, as exceptions do; they simply alert the user that something did not happen as planned. A warning can be reported on a # a connection object # a statement object (including PreparedStatment and CallableStatement objects) # a ResultSet object Each of these classes have a getWarnings method, which you mush invoke in order to see the first warning reported on the calling object. If getWarnings returns a warning, you can call the SQLWarning method getNextWarning on it to get any additional warnings. Executing a statement automatically clears the warnings from the previous statement, so they do not build up. This means, however that if you want to retrieve warnings reported on a statement you must do so before you execute another statement.
  • 22. Example Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( “ Select COF_NAME from COFFEES” ); while(rs.next) { String CoffeName = rs.getString( “COF_NAME” ); System .out.println( “ Coffees available at the Coffee Break: ” ); System .out.println( “ ” + coffeeName); SQLWarning warning = stmt.getWarnings(); if(warning != null) { System.out.println( “—Warning-” ); while(warning != null){ System .out.println( “Message: ” + warning.getMessage()); System .out.println( “SQLState: ” + warning.getSQLState()); System .out.println( “Vendor Eror Code: ” + warning.getErrorCode()); warning = warning.getNextWarning(); } } ---
  • 23. --- SQLWarning warn = rs.getWarnings(); if(warning != null) { System.out.println(“-- Warning --”); while(warn != null) { System.out.println(“Message: ” + warn.getMessage()); System.out.println(“SQLState: ” + warn.getSQLState()); System.out.println(“Vendor Error Code:” + warn.getErrorCode()); warn = warn.getNextWarning(); } } }