How to change the datatype of a column in an existing table using JDBC API?


You can change the datatype of a column in a table using the ALTER TABLE command.

Syntax

ALTER TABLE Sales MODIFY COLUMN column_name column_new_datatuype

Assume we have a table named Sales in the database with 7 columns namely ProductName, CustomerName, DispatchDate, DeliveryTime, Price, Location and, ID with description as:

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| ProductName  | varchar(255) | YES  |     | NULL    |       |
| CustomerName | varchar(255) | YES  |     | NULL    |       |
| DispatchDate | date         | YES  |     | NULL    |       |
| DeliveryTime | time         | YES  |     | NULL    |       |
| Price        | int(11)      | YES  |     | NULL    |       |
| Location     | varchar(255) | YES  |     | NULL    |       |
| ID           | int(11) | NO |      | NULL|         |       |
+--------------+--------------+------+-----+---------+-------+

Following JDBC program establishes connection with MySQL database, and changes the data-type of the column location from varchar to text.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ChangingDatatype {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating the Statement
      Statement stmt = con.createStatement();
      //Query to alter the table
      String query = "ALTER TABLE Sales MODIFY COLUMN Location Text";
      //Executing the query
      stmt.executeUpdate(query);
      System.out.println("Column datatype changed......");
   }
}

Output

Connection established......
Column datatype changed......

Since we have altered the type of location column, if you get the description of the Sales table using the describe command you can observe that the data-type of the column named location is changed from varchar to text.

mysql> describe sales;
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| ProductName  | varchar(255) | YES  |     | NULL    |       |
| CustomerName | varchar(255) | YES  |     | NULL    |       |
| DispatchDate | date         | YES  |     | NULL    |       |
| DeliveryTime | time         | YES  |     | NULL    |       |
| Price        | int(11)      | YES  |     | NULL    |       |
| Location     | text         | YES  |     | NULL    |       |
| ID           | int(11)      | NO   |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

Updated on: 30-Jul-2019

625 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements