07、JDBC 教程 - JDBC 时间数据类型的使用

JDBC 对时间类型的处理

Java 中的时间类型

1、 java.sql包下给出三个与数据库相关的日期时间类型,分别是:;
Date:表示日期,只有年月日,没有时分秒。会丢失时间;
Time:表示时间,有年月日时分秒;
Timestamp:表示时间戳,有年月日时分秒,以及毫秒。
这三个类都是 java.util.Date 的子类。
java.util.Date – 年月日时分秒
java.util.Calendar – Date getTime()

2、 新建立一张时间测试表;

 

3、 导出为脚本文件,在使用PL_SQL工具执行,以在Oracle数据库中生成时间测试表;

 

4、 完整代码见文末;

 

 

5、 将上面存入的日期时间数据查询读取出来;

 

源码

package com.wyx;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Time;
import java.sql.Timestamp;

public class JDBCUpdate1
{
   
     
	public static void main(String[] args)
	{
   
     
		getTime();
	}

	public static void saveTime()
	{
   
     
		// 定义oracle数据库的驱动的类
		String driverClass = "oracle.jdbc.OracleDriver";
		// 定义连接的oracle的url
		String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
		// 用户名
		String username = "scott";
		// 密码
		String password = "tiger";

		// 定义Connection连接
		Connection conn = null;
		// 定义数据库的sql执行对象
		PreparedStatement ps = null;
		// 定义要执行的sql
		String addSql = "insert into  time_test values(?,?,?)";

		try
		{
   
     
			// 注册数据库的驱动程序
			Class.forName(driverClass);
			// 获得数据库的连接
			conn = DriverManager.getConnection(url, username, password);
			// 创建sql执行对象
			ps = conn.prepareStatement(addSql);

			java.util.Date date = new java.util.Date();

			ps.setDate(1, new Date(date.getTime()));
			ps.setTime(2, new Time(date.getTime()));
			ps.setTimestamp(3, new Timestamp(date.getTime()));

			int count = ps.executeUpdate();
			System.out.println("数据响应条数:" + count);

		} catch (Exception e)
		{
   
     
			e.printStackTrace();
		} finally
		{
   
     
			try
			{
   
     
				if (ps != null)
				{
   
     
					ps.close();
				}
				if (conn != null)
				{
   
     
					conn.close();
				}
			} catch (Exception e)
			{
   
     
				e.printStackTrace();
			}
		}
	}

	public static void getTime()
	{
   
     
		// 定义oracle数据库的驱动的类
		String driverClass = "oracle.jdbc.OracleDriver";
		// 定义连接的oracle的url
		String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
		// 用户名
		String username = "scott";
		// 密码
		String password = "tiger";

		// 定义Connection连接
		Connection conn = null;
		// 定义数据库的sql执行对象
		PreparedStatement ps = null;

		// 定义结果集对象
		ResultSet rs = null;
		// 定义要执行的sql
		String sql = "select * from time_test";

		try
		{
   
     
			// 注册数据库的驱动程序
			Class.forName(driverClass);
			// 获得数据库的连接
			conn = DriverManager.getConnection(url, username, password);
			// 创建sql执行对象
			ps = conn.prepareStatement(sql);

			rs = ps.executeQuery();
			
			while (rs.next())
			{
   
     
				Date date = rs.getDate(1);
				Time time = rs.getTime(2);
				Timestamp timestamp = rs.getTimestamp(3);
				System.out.println("日期:" + date);
				System.out.println("时间:" + time);
				System.out.println("时间戳:" + timestamp);
			}
			
			//也可以使用 java.util下的date来接收
			/*
			while (rs.next())
			{
				java.util.Date date = rs.getDate(1);
				java.util.Date time = rs.getTime(2);
				java.util.Date timestamp = rs.getTimestamp(3);
				System.out.println("日期:" + date);
				System.out.println("时间:" + time);
				System.out.println("时间戳:" + timestamp);
			}*/
			
			/*while (rs.next())
			{
				java.util.Date date = rs.getDate(1);
				java.util.Date time = rs.getTimestamp(2);
				java.util.Date timestamp = rs.getTimestamp(3);
				System.out.println("日期:" + date);
				System.out.println("时间:" + time);
				System.out.println("时间戳:" + timestamp);
			}*/

		} catch (Exception e)
		{
   
     
			e.printStackTrace();
		} finally
		{
   
     
			try
			{
   
     
				if (ps != null)
				{
   
     
					ps.close();
				}
				if (conn != null)
				{
   
     
					conn.close();
				}
			} catch (Exception e)
			{
   
     
				e.printStackTrace();
			}
		}
	}
}