JDBC for Oracle - Herong's Tutorial Examples - v3.13, by Herong Yang
"CREATE TABLE" - Creating New Tables
This section describes how to create a table through the JDBC interface.
In order to do JDBC tests with Oracle database, I created a new table through JDBC interface using this program:
/* OracleCreateTable.java * Copyright (c) HerongYang.com. All Rights Reserved. */ import java.sql.*; import javax.sql.*; public class OracleCreateTable { public static void main(String [] args) { Connection con = null; try { // Setting up the DataSource object oracle.jdbc.pool.OracleDataSource ds = new oracle.jdbc.pool.OracleDataSource(); ds.setDriverType("thin"); ds.setServerName("localhost"); ds.setPortNumber(1521); ds.setDatabaseName("XE"); 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," + " FirstName VARCHAR(20) NOT NULL," + " LastName VARCHAR(20)," + " Point REAL DEFAULT 0.0," + " BirthDate DATE DEFAULT '31-Dec-1988'," + " ModTime TIMESTAMP DEFAULT '31-Dec-2006 11:59:59.999')"); System.out.println("Table created."); sta.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } }
I ran this sample program, I got the "ORA-01031: insufficient privileges" exception:
herong> java -cp .;ojdbc11.jar OracleCreateTable java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:195) at oracle.jdbc.driver.T4CStatement.executeForRows(...) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(...) at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(...) at oracle.jdbc.driver.OracleStatement.executeUpdate(...) at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(... at OracleCreateTable.main(OracleCreateTable.java:26)
I had to log in with SQL*Plus using Windows user group authentication and grant "CREATE TABLE" privilege to user "Herong":
herong> sqlplus /nolog SQL> connect / as sysdba Connected. SQL> GRANT CREATE TABLE TO Herong; Grant succeeded.
I ran this sample program again, I got the "ORA-01950: no privileges on tablespace" exception:
herong> java -cp .;ojdbc11.jar OracleCreateTable java.sql.SQLSyntaxErrorException: ORA-01950: no privileges on tablespace 'SYSTEM' at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) ...
Okay, I had to move user "Herong" to use "USERS" tablespace and gave some space quota.
herong> sqlplus /nolog SQL> connect / as sysdba Connected. SQL> ALTER USER Herong DEFAULT TABLESPACE USERS; User altered. SQL> ALTER USER Herong QUOTA 10M ON USERS; User altered.
If you run this program again, table "Profile" will be created. But you run it one more time, you will get the "ORA-00955: name is already used by an existing object" exception:
herong> java -cp .;ojdbc11.jar OracleCreateTable Table created. herong> java -cp .;ojdbc11.jar OracleCreateTable java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) ...
Table of Contents
JDBC (Java Database Connectivity) Introduction
Oracle Express Edition Installation on Windows
JDBC Thin Client-Side Driver Installation
Loading JDBC Driver Class - ojdbc16.jar
Creating Connections with DataSource Class
DataSource Error - makeURL() Failed
Getting Driver and Server Information
►"CREATE TABLE" - Creating New Tables
"INSERT INTO" - Inserting New Data Rows
Oracle - Reference Implementation of JdbcRowSet
Oracle - JBDC CallableStatement
Oracle CLOB (Character Large Object) - TEXT
Oracle BLOB (Binary Large Object) - BLOB