In my first Java JDBC tutorial (How to connect to a JDBC database) I demonstrated how to connect your Java applications to standard SQL databases like MySQL, SQL Server, Oracle, SQLite, and others using the JDBC Connection
object.
In this article I’ll take the next step and show how to insert data into a database table using Java, JDBC, and SQL.
Step 1: A sample database
Before getting into the SQL INSERT
statements, you need to know what the sample database table looks like. In all of my examples in this series, I’ll be working with a database named Demo
that has a database table named Customers
.
Here’s what the Customers
database table looks like:
|
|
|
|
|
1001 | Simpson | Mr. | Springfield | 2001 |
1002 | McBeal | Ms. | Boston | 2004 |
1003 | Flinstone | Mr. | Bedrock | 2003 |
1004 | Cramden | Mr. | New York | 2001 |
How to create a JDBC INSERT statement
Inserting data into a SQL database table using Java is a simple two-step process:
- Create a Java
Statement
object. - Execute a SQL
INSERT
command through the JDBCStatement
object.
If you’re comfortable with SQL, this is a simple process. When Sun (now Oracle) created JDBC, they intended to “make the simple things simple.”
Step 2: Execute the JDBC INSERT statement
Here’s an example of how to create a Java Statement
object, and then insert a record for a person named Mr. Simpson, of a town named Springfield:
// create a Statement from the connection Statement statement = conn.createStatement(); // insert the data statement.executeUpdate("INSERT INTO Customers " + "VALUES (1001, 'Simpson', 'Mr.', 'Springfield', 2001)");
As this shows, you (1) create a JDBC Statement
object from your Connection
instance, and (2) run your SQL INSERT
statement using the Statement
object's executeUpdate
method. (I show the complete process of obtaining a database Connection
object below.)
If you're not familiar with SQL, note that you must insert your fields in the order in which your table is defined (Cnum, Lname, Salutation, City, and Snum). (Snum stands for Salesperson Number, which we'll use later to link this table to our Salesperson table.)
Inserting the other three records is just as easy as inserting this record. We can just re-use the Statement
object to insert our new values:
statement.executeUpdate("INSERT INTO Customers " + "VALUES (1002, 'McBeal', 'Ms.', 'Boston', 2004)"); statement.executeUpdate("INSERT INTO Customers " + "VALUES (1003, 'Flinstone', 'Mr.', 'Bedrock', 2003)"); statement.executeUpdate("INSERT INTO Customers " + "VALUES (1004, 'Cramden', 'Mr.', 'New York', 2001)");
As you can see, this is pretty easy (once you've seen how it’s done). In a real application you’ll just replace the string constants we’ve used with variables that you obtain from (a) an end-user or (b) an input data source.
Note: In this example, I assumed that the database table named Customers is already created. You can create your database tables through your database management tools.
The JdbcInsert1.java program
To help you understand how this process works, the following source code shows a complete Java program that creates a Connection
to the database, and then inserts the data as shown previously:
import java.sql.*; /** * JdbcInsert1.java - Demonstrates how to INSERT data into an SQL * database using Java JDBC. */ class JdbcInsert1 { public static void main (String[] args) { try { String url = "jdbc:msql://200.210.220.1:1114/Demo"; Connection conn = DriverManager.getConnection(url,"",""); Statement st = conn.createStatement(); st.executeUpdate("INSERT INTO Customers " + "VALUES (1001, 'Simpson', 'Mr.', 'Springfield', 2001)"); st.executeUpdate("INSERT INTO Customers " + "VALUES (1002, 'McBeal', 'Ms.', 'Boston', 2004)"); st.executeUpdate("INSERT INTO Customers " + "VALUES (1003, 'Flinstone', 'Mr.', 'Bedrock', 2003)"); st.executeUpdate("INSERT INTO Customers " + "VALUES (1004, 'Cramden', 'Mr.', 'New York', 2001)"); conn.close(); } catch (Exception e) { System.err.println("Got an exception! "); System.err.println(e.getMessage()); } } }
If you’re interested, you can download the Java source code for the JdbcInsert1.java program here. You can test the code on your own system, but note that you’ll need to change the lines where I create my url
and conn
objects to reflect your own database configuration. You’ll also need the appropriate JDBC driver for the database you’re using.
Related Java JDBC content
When it comes to inserting data into a database, most developers prefer to use a PreparedStatement
instead of a Statement
, as the PreparedStatement
is more secure. (But when you’re first learning JDBC it’s helpful to see the Statement
first.) Please see these articles for more information on how to use a PreparedStatement
:
- How do I create and use a JDBC PreparedStatement?
- A sample JDBC PreparedStatement that uses SQL UPDATE
Summary
In summary, inserting data into an SQL database table with JDBC is a simple two-step process. Just (1) create a Statement
object, and (2) use the object to run your normal SQL INSERT
commands.