Java JDBC Tutorials

jdbc logo

The Java Database Connectivity (JDBC) API enables Java application to interact with database.

1. Getting Started

2. Statement

This Statement has no cache, good for simple and static SQL statements like CREATE or DROP. In Statement, the way we construct the condition or parameters in SQL is prone to SQL injection, remember escape the quotes and special characters.

  • statement.execute(sql) – Normally for DDL like CREATE or DROP
  • statement.executeUpdate(sql) – Normally for DML like INSERT, UPDATE, DELETE
  • statement.executeQuery(sql) – Run SELECT query and return a ResultSet
  • statement.executeBatch() – Run SQL commands as a batch

Articles:

3. PreparedStatement

PreparedStatement extends Statement to provide better performance by precompiled and cached the SQL statement, good for SQL statement that need to execute multiple times. Furthermore, it provides many setXxx() to protect SQL injection by escaping the quotes and special characters.

  • preparedStatement.execute() – Normally for DDL like CREATE or DROP
  • preparedStatement.executeUpdate() – Normally for DML like INSERT, UPDATE, DELETE
  • preparedStatement.executeQuery() – Run SELECT query and return a ResultSet
  • preparedStatement.executeBatch() – Run SQL commands as a batch

Articles:

4. CallableStatement

CallableStatement extends PreparedStatement, for executing stored procedures or functions from the database.

  • conn.prepareCall(sql)

Oracle database

PostgreSQL

5. Transaction


conn.setAutoCommit(false); // default true
// start transaction block

// SQL statements

// end transaction block
conn.commit();
conn.setAutoCommit(true);

6. Spring JDBC Database Access

JdbcTemplate examples.

FAQs

References

Oracle

MySQL

PostgreSQL

28 comments on “Java JDBC Tutorials

  1. Thank You for very useful tutorial
    I have question related to JDBC can you help me with it ?
    I want to draw bezier cubic curves by retrieving data from MySQL
    database and then display the shape on JFrame I have table has 3 columns
    (ID, ObjectID, Points) Points column is coordinates of cubic curves the statement is

    SELECT * FROM DB.TABNAME WHERE OBJECTID=1;

    ObjectID=1 has 11 ID’s, each ID contains a shape if i combine all ID`s together will form composite shape
    How can i retrieve data from MySQL database, that data are path to draw bezier cubic curves in java GUI?

    Reply
  2. hi mkyong, its really awesome, a very good site to learn……
    thnq u….

    Reply
  3. hi yong

    Can you tell me how to get list of database in Oracle as well as MySql using java?
    Like SQLYog IDE which lists all databases in MySql.
    I want the same thing. I want to connect to any Database server and fetch list of database in it.

    Reply
  4. i want subscription with jdbc code pls help

    Reply
  5. Hello

    I’m creating a web service on Java. And I need it to connect with many dbms (Oracle, MySql…). Is there a way to do that ?
    PS :I’m working with hibernate.

    Reply
  6. all the tutorials are very helpful for me and all others

    can u upload tutorials for servlets ans jsp

    thank you mr.yong

    Reply
  7. hi sir,could help me please,actually we are using prepared statement for speed up and much more,ok but i want to perform single operation not bulk,which one is better and fast general or prepared stament(and also in terms of sql injection).thanx a lot sir.

    Reply
  8. Hi mkyong, very good tutorials! Thaks a lot for making java so simple =)

    Can you make a tutorial about using trigger??

    Reply
  9. hi sir,

    can u explain me, how can we get database table address in java program., pls help me out sir, this question asked in interview for my friend.

    Reply
  10. thnx mr. yong this article of your’s abt JDBC helped me a lot

    Reply
    1. thnx mr. yong this article of your’s abt JDBC helped me a lot

      Reply
  11. Hi Yong,
    can you please suggest a good JSP tutorial?
    thanks.

    Reply
  12. an article in JFreeChart and JavaMail 🙂 plz

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *