【Java学习】JDBC数据类型

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【Java学习】JDBC数据类型脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我们知道Java的数据类型和数据库中的类型并不是一一对应的,我们在使用JDBC在与数据库进行交互的时候,比如我们向数据库中插入一条数据,或者从数据库中查询一个数据,为什么我们能够正常的读取呢?那是因为存在着一个对应关系或者是一个映射关系。

clipboard.png

通过这个JDBC驱动程序,我们就能够两个数据类型的相互转化了。

映射表

下表总结了当调用PReparedStatement或者CallableStatement对象或者ResultSet.updateXXX()方法和setXXX()方法时,将Java数据类型转换为默认的jDBC数据类型/Java类型。

clipboard.png

setXXXupdateXXX()

setXXX()updateXXX()方法可以将特定的Java类型转换为特定的JDBC数据类型。在结果集ResultSet已经总结过。

setObject()updateObject()可以将几乎任何java数据类型映射到JDBC数据类型。

时间与日期类型

java.SQL.Date类映射到SQLDATE类型,java.sql.Time和java.sql.Timestamp类分别映射到SQLTIME和SQLTIMESTAMP数据类型。

下面实例显示了如何格式化为标准java日期和时间

import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.*;  public class sqlDateTime{     public static void main(String[] args){         //得到标准的日期和时间         java.util.Date javaDate = new java.util.Date();         long javaTime = javaDate.getTime();         System.out.println("The java Date is:"+javaDate.toString());                  //得到并显示SQL日期         java.sql.Date sqlDate = new java.sql.Date(javaTime);         System.out.println("The SQL DATE is:" + sqlDate.toString());                  //得到并显示Sql时间         java.sql.Time sqlTime = new java.sql.Time(javaTime);         System.out.println("The SQL TIME is:" + sqlTime.toString());                  //得到并且显示SQL时间戳         java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime);         System.out.println("The SQL TIMESTAMP is :" + sqlTimestamp.toString());                        }  }

结果:

F:workspjdbc>javac SqlDateTime.java  F:workspjdbc>java SqlDateTime The Java Date is:Wed May 31 23:54:57 CST 2017 The SQL DATE is: 2017-05-31 The SQL TIME is: 23:54:57 The SQL TIMESTAMP is: 2017-05-31 23:54:57.937  F:workspjdbc> 

处理NULL值

对于Sql和hava而言,两个null值的含义不一样。
SQL中的NULL值是遗漏的未知数据
而Java中代表着是空值,是一种特殊的值,它可以是任何数据类型的默认值。

所以要在Java中处理SQL的NULL该如何做呢?
先看一下下面的实例:

Statement stmt = conn.createstatement(); String sql = "SELECT id,First,last,age From Employees"; ResultSet rs = stmt.excuteQuery(sql);  int id = rs.getInt(1); if(rs.wasNull()){     id = 0; }

由上面可以看出,直接使用get()方法,可能获取到NULL值,这个时候,resultSet对象有一个wasNull()方法,来测试是不是NULL值。

下面来细细的总结一下如何详细的处理NULL值。

从数据库中读取到的NULL

第一种方法

判断通过get方法获取到的值可以使用==比较符。看下面的例子

String mgrno = rs.getString(1);   if (mgrno== null)  {      System.out.println ("n MGRNO isnull n");      }  

可以看出获取String类型,如果是NULL的话,会直接转换为null值,但是这并不是总是奏效,因为使用getInt()getShort()接收值时,若值为SQL NULL,会自动转换成0

第二种方法

前面已经见识到了,Resultset对象提供了一个wasNull()检测。
例子看之前的。

向数据库中传入NULL值

首先往数据库里传入值会有两种方式,一种是使用结果集的UpdateXXX()方法,另一种是使用结果集的Set方法,也可以通过Statement,执行UPDATE SQL语句,但大体来说都一样。

第一种方法
同样的,对于String等类型而言是可以通过null直接赋值,如setXXX(1,null)。
但是同理,如果对于setInt(1,null)或是setFloat(1,null)、setShort(1,null)时都无法通过编译

也就是说只有当类型为java对象时可以执行成功.

第二种方法

受第一种的启发,我们可以在创建Statement SQL语句时,就可以直接设置成NULL啊,确实可以,但是这种方式不够灵活,万一我设置NULL值呢?下次还得写一遍。

第三种方法
同样的Preparedstatement对象同样提供了一个setNull()方法,来专门赋NULL值。

例子:

PreparedStatement pstmt = null;    sql = "UPDATE EMP SET EDLEVEL = ? "  + " WHERE EMPNO = '0000110' ";   pstmt = con.prepareStatement(sql);    if ( some condition )  {     pstmt.setNull (1,java.sql.TyPE.SMALLINT);  }    else  {      pstmt.setShort( 1, 16 );   }   updateCount = pstmt.executeUpdate();  

其中第二个参数是参数类型,要使用SQL中的类型。

参考资料

易百教程
JDBC处理NULL值

脚本宝典总结

以上是脚本宝典为你收集整理的【Java学习】JDBC数据类型全部内容,希望文章能够帮你解决【Java学习】JDBC数据类型所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。