问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据库的数据类型为什么要转为jdbc数据类型,是因为我们无法操作数据库里的数据类型吗?

发布网友 发布时间:2022-04-08 03:07

我来回答

2个回答

懂视网 时间:2022-04-08 07:28

JDBC数据类型

JDBC驱动程序Java数据类型转换到适当的JDBC类型然后再将它发送到数据库。它使用默认的大多数数据类型映射。例如,一个Java int转换成一个SQL INTEGER。创建默认映射驱动器之间提供一致性。

下表总结了默认的JDBC数据类型的Java数据类型转换,当调用setXXX()方法的PreparedStatement或CallableStatement对象或ResultSet.updateXXX()方法。

SQLJDBC/JavasetXXXupdateXXX
VARCHAR java.lang.String setString updateString
CHAR java.lang.String setString updateString
LONGVARCHAR java.lang.String setString updateString
BIT boolean setBoolean updateBoolean
NUMERIC java.math.BigDecimal setBigDecimal updateBigDecimal
TINYINT byte setByte updateByte
SMALLINT short setShort updateShort
INTEGER int setInt updateInt
BIGINT long setLong updateLong
REAL float setFloat updateFloat
FLOAT float setFloat updateFloat
DOUBLE double setDouble updateDouble
VARBINARY byte[ ] setBytes updateBytes
BINARY byte[ ] setBytes updateBytes
DATE java.sql.Date setDate updateDate
TIME java.sql.Time setTime updateTime
TIMESTAMP java.sql.Timestamp setTimestamp updateTimestamp
CLOB java.sql.Clob setClob updateClob
BLOB java.sql.Blob setBlob updateBlob
ARRAY java.sql.Array setARRAY updateARRAY
REF java.sql.Ref SetRef updateRef
STRUCT java.sql.Struct SetStruct updateStruct

JDBC3.0的增强支持BLOB,CLOB,ARRAY,REF数据类型。ResultSet对象现在有UPDATEBLOB(),updateCLOB(),updateArray()和updateRef()方法,使您可以在服务器上直接操作相应的数据。

setXXX()和updateXXX()方法,使您可以转换成特定的Java类型到特定的JDBC数据类型。setObject()和updateObject()方法,使您能够几乎所有的Java类型映射到JDBC数据类型。

ResultSet对象提供相应的getXXX()方法为每个数据类型来检索列值。每一种方法,可以使用与列名或由它的序号位置。

SQLJDBC/JavasetXXXgetXXX
VARCHAR java.lang.String setString getString
CHAR java.lang.String setString getString
LONGVARCHAR java.lang.String setString getString
BIT boolean setBoolean getBoolean
NUMERIC java.math.BigDecimal setBigDecimal getBigDecimal
TINYINT byte setByte getByte
SMALLINT short setShort getShort
INTEGER int setInt getInt
BIGINT long setLong getLong
REAL float setFloat getFloat
FLOAT float setFloat getFloat
DOUBLE double setDouble getDouble
VARBINARY byte[ ] setBytes getBytes
BINARY byte[ ] setBytes getBytes
DATE java.sql.Date setDate getDate
TIME java.sql.Time setTime getTime
TIMESTAMP java.sql.Timestamp setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
BLOB java.sql.Blob setBlob getBlob
ARRAY java.sql.Array setARRAY getARRAY
REF java.sql.Ref SetRef getRef
STRUCT java.sql.Struct SetStruct getStruct

日期 & 时间数据类型:

java.sql.Date类映射到SQL DATE类型,并在java.sql.Time的java.sql.Timestamp类,分别映射到SQL和SQL TIMESTAMP数据类型。

以下示例显示了如何的格式的日期和时间类标准的Java日期和时间值相匹配的SQL数据类型需求。

import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.*;

public class SqlDateTime {
 public static void main(String[] args) {
 //Get standard date and time
 java.util.Date javaDate = new java.util.Date();
 long javaTime = javaDate.getTime();
 System.out.println("The Java Date is:" + 
  javaDate.toString());

 //Get and display SQL DATE by www.yiibai.com
 java.sql.Date sqlDate = new java.sql.Date(javaTime);
 System.out.println("The SQL DATE is: " + 
  sqlDate.toString());

 //Get and display SQL TIME
 java.sql.Time sqlTime = new java.sql.Time(javaTime);
 System.out.println("The SQL TIME is: " + 
  sqlTime.toString());
 //Get and display SQL TIMESTAMP
 java.sql.Timestamp sqlTimestamp =
 new java.sql.Timestamp(javaTime);
 System.out.println("The SQL TIMESTAMP is: " + 
  sqlTimestamp.toString());
 }//end main
}//end SqlDateTime

现在让我们来编译上面的例子如下:

C:>javac SqlDateTime.java
C:>

当你运行JDBCExample的,它会产生以下结果:

C:>java SqlDateTime
The Java Date is:Tue Aug 18 13:46:02 GMT+04:00 2009
The SQL DATE is: 2009-08-18
The SQL TIME is: 13:46:02
The SQL TIMESTAMP is: 2009-08-18 13:46:02.828
C:>

处理NULL值:

SQL使用NULL值和Java的使用null是不同的概念。那么如何在Java中处理SQL NULL值呢?有三种方法可以使用:

  1. 避免使用getXXX()方法返回的原始数据类型。

  2. 使用原始数据类型的包装类,并使用ResultSet对象的wasNull()方法来测试的getXXX()方法返回的包装类变量的值是否应被设置为null。

  3. 使用原始数据类型和ResultSet对象的wasNull()方法来测试是否收到原始变量,返回的值的getXXX()方法将被设置为选择一个可接受的值代表一个NULL。

下面是一个例子来处理NULL值:

Statement stmt = conn.createStatement( );
String sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

int id = rs.getInt(1);
if( rs.wasNull( ) ) {
 id = 0;
}

JDBC数据类型

标签:

热心网友 时间:2022-04-08 04:36

一般情况下是需要的,否则mybatis强行插入可能会报错。
简单的比如数据库中的字段是int类型,mybatis中用jdbcType=varchar类型去映射,这样不会报错。强制将字符串插入数据中整型。最好类型一致,避免不必要的异常错误出现。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网上订酒店哪个网好 经常听了歌就使劲摇头,长期会对大脑有什么影响吗 携程有什么优点 吉娃娃幼犬多少钱一只吉娃娃犬多少钱一只黑龙江省那有卖 吉娃娃现在多少钱一只? 预防中风的小动作有哪些呢? 京巴,吉娃娃,这类小型宠物狗大概多少钱? 摇头时颈椎有响声 旅行社怎么和携程合作推广旅游线路 不是纯种的吉娃娃狗狗能卖多少钱呢 用“选”字怎么组词? 选的组词有哪些 81 PRODUCE的声优列表 有没有好看的韩剧或日剧啊?动漫也可以 最近有啥好看的日剧? 有没有什么类似于《家有六子》 《我的帅管家》之类的日剧好看啊?? 在薛宝钗眼里,贾宝玉与大观园里其他男人相比是优等生吗? 日本好看的动画片有哪些? 校园搞笑日剧 跪求这两部日剧的名字 西门子6se70变频器的使用p100=4是什么意思 西门子变频器面板说明书? 西门子变频器的基本功能有哪些 西门子变频器的使用 西门子变频器安装及使用环境应该注意什么问题? 西门子变频器的选择使用 猪肠怎样炒才好吃不会硬,求步骤 生炒猪大肠怎么做才好吃 三星手机上面的应用怎么隐藏? 连上路由器没网 怎么进192.168.0.1 “选”字怎么组词? 选组词可以怎么组? 豹马的山黄泡酒有什么用处? 选可以怎么组词 选的组词怎么写 求一句古风的,很凄美的诗句,最好是词 关于选字的组词 黄草山是什么意思 "选"字组词有哪些? 黄草山的景色 选的多音字组词 黄草山的传说 选组词并造句? 黄草山的黄草山森林公园 野生黄草怎么种植 选的组词有哪些词语 赞美黄草山的诗句 选择的择换成金字旁怎么组词 重庆长寿黄草山森林公园的特色是什么 重庆长寿的黄草山在哪