JDBC Tutorials - Herong's Tutorial Notes
Dr. Herong Yang, Version 2.11

Creating Tables with AUTO_INCREMENT Columns

This section describes how to create a table with an AUTO_INCREMENT column.

Different database servers have different ways to support columns with automatically incremented values. MySQL uses the key word AUTO_INCREMENT to specify an auto-incrementing column.

In order to try AUTO_INCREMENT columns and provide a test table for testing DML (Data Manipulation Statements), I wrote the following program to create a table called "Profile" with the primary key column defined as an AUTO_INCREMENT column:

/**
 * MySqlAutoIncrement.java
 * Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
 */
import java.sql.*;
import javax.sql.*;
public class MySqlAutoIncrement {
  public static void main(String [] args) {
    Connection con = null;
    try {
    	
// Setting up the DataSource object
      com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds 
        = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
      ds.setServerName("localhost");
      ds.setPortNumber(3306);
      ds.setDatabaseName("HerongDB");
      ds.setUser("Herong");
      ds.setPassword("TopSecret");

// Getting a connection object
      con = ds.getConnection();

// Creating a database table
      Statement sta = con.createStatement(); 
      int count = sta.executeUpdate(
        "CREATE TABLE Profile ("
        + " ID INTEGER PRIMARY KEY AUTO_INCREMENT,"
        + " FirstName VARCHAR(20) NOT NULL,"
        + " LastName VARCHAR(20),"
        + " Point REAL DEFAULT 0.0,"
        + " BirthDate DATE DEFAULT '1988-12-31',"
        + " ModTime TIMESTAMP DEFAULT '2006-12-31 23:59:59.999')");
      System.out.println("Table created.");
      sta.close();        

      con.close();        
    } catch (Exception e) {
      System.err.println("Exception: "+e.getMessage());
    }
  }
}

When you run this program, table Profile will be created. But you run it again, you will get an exception:

C:\>javac -cp .;\local\lib\mysql-connector-java-5.0.7-bin.jar 
  DerbyIdentityColumn.java

C:\>java -cp .;\local\lib\mysql-connector-java-5.0.7-bin.jar 
  DerbyIdentityColumn

Table created.

C:\>java -cp .;\local\lib\mysql-connector-java-5.0.7-bin.jar 
  DerbyIdentityColumn

Exception: Table 'profile' already exists

Sections in This Chapter

MySQL Connector/J - Download and Installation

Loading JDBC Driver Class - mysql-connector-java-5.0.7-bin.jar

JDBC Driver Connection URL

Creating Connections with DataSource Class

Getting Driver and Server Information

Creating Tables with AUTO_INCREMENT Columns

"INSERT INTO" Statements

Dr. Herong Yang, updated in 2007
Creating Tables with AUTO_INCREMENT Columns