JDBC学习笔记(7):数据类型与日期问题

在进行日期类型的操作时,会出现两个Date,来自java.util.Date和java.sql.Date包,java.util.Date是java.sql.Date的super类。

demo:

 1 package com.xxyh.jdbc;
 2 import java.sql.Connection;
 3 import java.sql.PreparedStatement;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.util.Date;
 7 public class DateTest {
 8
 9     public static void main(String[] args) throws SQLException {
10         create("qianqi",new Date(),500);
11     }
12
13     public static void create(String name, Date birthday, float money) throws SQLException {
14         Connection conn = null;
15         PreparedStatement ps = null;
16         ResultSet rs = null;
17
18         try {
19             conn = JdbcUtils.getConnection();
20             String sql = "insert into user(name,birthday,money) values(?,?,?)";
21             ps = conn.prepareStatement(sql);
22             ps.setString(1, name);
23
24             //ps.setDate(2, (java.sql.Date) birthday);//---------1
25             //ps.setDate(2, new java.sql.Date(birthday.getTime()));//---------2
26             ps.setFloat(3, money);
27
28             int i =ps.executeUpdate();
29             System.out.println("i==="+i);
30         } finally {
31             JdbcUtils.close(rs, ps, conn);
32         }
33     }
34 }

当使用方式1进行强制转换时会报出异常:

Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

at com.xxyh.jdbc.DateTest.create(DateTest.java:26)

at com.xxyh.jdbc.DateTest.main(DateTest.java:12)

创意一个样例,发现java.sql.Date与java.util.Date参数不同,java.sql.Date没有时分秒:

通过查看API,找到方式2,首先获取毫秒数再构造成java.sql.Date形式,将java.util.Date转换成java.sql.Date的方式如下:

new java.sql.Date(new java.util.Date().getTime());
时间: 2024-11-01 23:09:17

JDBC学习笔记(7):数据类型与日期问题的相关文章

CUBRID学习笔记 11 数据类型之日期

datetime 虽然和mysql很相像,但是日期类型和mysql是不一样的.和sqlserver差不多. 如YYYY-MM-DD hh:mi:ss.fff or mm/dd/yyyy hh:mi:ss.fff 当然 还有短日期类型date   2012-10-29 这种

Oracle之PL/SQL学习笔记之数据类型(三)

Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到动态执行程序,同时也可以利用变量在PL/SQL内部进行值得传递,甚至可以把值传递出去,最终返回给用户,由此可见,变量是PL/SQL不可或缺的一部分. 1. Oracle预定义的普通数据类型(常见的数据类型) 类型 子类 说明 Oracle中的范围 char Character,String Rowi

C++学习笔记之数据类型

一.变量名 几条简单的C++命名规则: 在名称中只能使用字母,数字和下划线 名称的第一个字符不能是数字 区分大小写 不能将C++关键字用作名称 以两个下划线和大写字母打头的名称被保留给实现(编译器及其使用资源)使用.以一个下划线开头的名称被保留给实现,用作全局标识符. C++对名称长度没有限制 二.数据类型 计算机内存的最基本单元是位(bit).字节(byte)通常指的是8位内存单元,可以表示的范围0-255或者-128到127. (1)整型 short至少16位(大多数系统16位,-32768

JDBC学习笔记(一)

public static void main(String[] args) { ResultSet rs = null; Statement stmt = null; Connection conn = null; try { /** * 1.加载JDBC驱动程序: * 加载目标数据库驱动到JVM * 成功加载后,会将Driver类的实例注册到DriverManager类 * oracle-Driver:oracle.jdbc.driver.OracleDriver * MySQL-Drive

JDBC学习笔记二

Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方法来获取 * 2).通过excuteUpdate(sql)可以执行S

【转】JDBC学习笔记(2)——Statement和ResultSet

转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方

swift学习笔记之数据类型

前言:这份学习笔记是写给有编程经验的人看的,因为内容方面很多基础知识被省略掉了,所以请初学者们勿怪我写得不详尽. swift包括如下数据类型: 1.整型 Int var age:Int = 20 let age:Int = 20 [注]在此说一下swift较Objective-C的改变. 1)以前定义一个变量如整型的,我们会想下面这样写 NSInteger age = 20; 现在定义变量得用var关键字,然后在变量名称后面使用冒号加变量类型的方式,或者声明类型,如下: var age = 20

JDBC学习笔记一

JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改记录 JDBC架构   JDBC API支持两层和三层的处理模式对数据库的访问,但一般JDBC体系结构由两层组成: JDBC API: 这提供了应用程序到JDBC管理器连接. JDBC Driver API: 这支持J

【转】JDBC学习笔记(1)——JDBC概述

转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改记录 JDBC架构   JDBC API支持两层和三层的处理模式对数据库的访问,但一般JDBC体系结构由两层组成: JDBC API: 这提供了应用程