如何在 JDBC 中重新排序表的列?
jdbcjava 8object oriented programmingprogramming
您可以使用 ALTER TABLE 命令重新排序 MySQL 数据库中表的列。
语法
ALTER TABLE 表名 修改列名 数据类型 AFTER 另一个列
假设数据库中有一个名为 dispatches_data的表,包含 7 列,分别为 ProductName、CustomerName、DispatchDate、DeliveryTime、Price、Location 和 ID,描述为 −
//检索时间对象 Time timeObj = rs.getTime("DeliveryTime"); //将时间对象转换为字符串格式 String time = timeObj.toString();
示例
让我们使用 CREATE 语句在 MySQL 数据库中创建一个名为 dispatches 的表,如下所示−
CREATE TABLE dispatches( ProductName VARCHAR(255), CustomerName VARCHAR(255), Price INT, Location VARCHAR(255), DispatchTimeStamp timestamp);
现在,我们将使用 INSERT 语句在 dispatches_data 表中插入 6 条记录 −
insert into dispatches values('Key-Board', 'Raja', 7000, 'Hyderabad', TIMESTAMP('2019-05-04 15:02:45')); insert into dispatches values('Earphones', 'Roja', 2000, 'Vishakhapatnam', TIMESTAMP('2019-06-26 14:13:12')); insert into dispatches values('Mouse', 'Puja', 3000, 'Vijayawada', TIMESTAMP('2019-12-07 07:50:37')); insert into dispatches values('Mobile', 'Vanaja', 9000, 'Chennai', TIMESTAMP('2018-03-21 16:00:45')); insert into dispatches values('Headset', 'Jalaja', 6000, 'Goa', TIMESTAMP('2018-12-30 10:49:27')); insert into dispatches values('Watch', 'Rajan', 4000, 'Chennai', TIMESTAMP('2019-04-21 14:17:02'));
以下 JDBC 程序与数据库建立连接并重新排序 dispatches_data 表的列。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ReorderingColumnsOfTable { public static void main(String args[])throws Exception { //注册驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //获取连接 String mysqlUrl = "jdbc:mysql://localhost/mydatabase"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("连接已建立......"); //创建 Statement 对象 Statement stmt = con.createStatement(); //查询以重新排序表 String query = "ALTER TABLE dispatches_data MODIFY DispatchTimeStamp timestamp AFTER CustomerName"; //执行查询 stmt.execute(query); //检索 dispatches_data 表的内容 stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from dispatches_data"); while(rs.next()) { System.out.print("Name: "+rs.getString("ProductName")+", "); System.out.print("Customer Name: "+rs.getString("CustomerName")+", "); System.out.print("Dispatch time stamp: "+rs.getTimestamp("DispatchTimeStamp")+", "); System.out.print("Price: "+rs.getInt("Price")+", "); System.out.print("Location: "+rs.getString("Location")); System.out.println(); } } }
在此程序中,我们使用 alter 命令将 DispatchTimeStamp 列从第 5 位移动到第 3 位。
输出
连接已建立…… Name: Key-Board, Customer Name: Raja, Dispatch time stamp: 2019-05-04 15:02:45.0, Price: 7000, Location: Hyderabad Name: Earphones, Customer Name: Roja, Dispatch time stamp: 2019-06-26 14:13:12.0, Price: 2000, Location: Vishakhapatnam Name: Mouse, Customer Name: Puja, Dispatch time stamp: 2019-12-07 07:50:37.0, Price: 3000, Location: Vijayawada Name: Mobile, Customer Name: Vanaja, Dispatch time stamp: 2018-03-21 16:00:45.0, Price: 9000, Location: Chennai Name: Headset, Customer Name: Jalaja, Dispatch time stamp: 2018-12-30 10:49:27.0, Price: 6000, Location: Goa Name: Watch, Customer Name: Rajan, Dispatch time stamp: 2019-04-21 14:17:02.0, Price: 4000, Location: Chennai if you verify the contents of the table you can observe that the order of the columns has been changed.
mysql> select * from dispatches_data; +-------------+--------------+---------------------+-------+----------------+ | ProductName | CustomerName | DispatchTimeStamp | Price | Location | +-------------+--------------+---------------------+-------+----------------+ | Key-Board | Raja | 2019-05-04 15:02:45 | 7000 | Hyderabad | | Earphones | Roja | 2019-06-26 14:13:12 | 2000 | Vishakhapatnam | | Mouse | Puja | 2019-12-07 07:50:37 | 3000 | Vijayawada | | Mobile | Vanaja | 2018-03-21 16:00:45 | 9000 | Chennai | | Headset | Jalaja | 2018-12-30 10:49:27 | 6000 | Goa | | Watch | Rajan | 2019-04-21 14:17:02 | 4000 | Chennai | +-------------+--------------+---------------------+-------+----------------+ 6 rows in set (0.00 sec)