jdbc和jdbc驱动

有趣的是,布尔类型只是在SQL标准后期才引入,即SQL:1999 。 即使在今天,并非所有数据库本身都支持BOOLEANBIT类型。 最重要的是,我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问汤姆”的观点: https : //asktom.oracle.com/pls/apex/f?p=100 :11:0 ::::: P11_QUESTION_ID: 6263249199595

Oracle 为什么没有布尔值?

人们通过使用数字或字符串文字来解决此限制。 例如1 / 0Y / NT / F或SQL标准'true' / 'false'

JDBC中的布尔值

从JDBC API的角度来看,可以通过PreparedStatement.setBoolean()将布尔值设置为绑定值,也可以通过ResultSet.getBoolean()和类似方法从结果集中ResultSet.getBoolean()布尔值。 如果您的数据库支持布尔值,则Java boolean类型可以很好地映射到SQL BOOLEAN ,即使Java的Boolean包装器类型更适合尊重NULLs

但是,如果要将布尔值存储在INTEGERCHAR(1)VARCHAR(1)列中,则在各种数据库中情况看起来会有所不同。 考虑以下示例:

CREATE TABLE booleans (val char(1)
);

然后,运行此Java程序(我们使用jOOQ保持简洁)

try {DSL.using(configuration).execute("insert into boolean (val) values (?)", true);
}
catch (Exception e) {e.printStackTrace();
}DSL.using(configuration).fetch("select * from booleans");

并非所有的数据库/ JDBC驱动程序都支持上述功能。 这些数据库将运行上述程序:

  • Firebird(插入“ Y”或“ N”)
  • HSQLDB(插入“ 1”或“ 0”)
  • IBM DB2(插入“ 1”或“ 0”)
  • MariaDB(插入“ 1”或“ 0”)
  • Microsoft Access(插入“ 1”或“ 0”)
  • MySQL(插入'1'或'0')
  • Oracle(插入“ 1”或“ 0”)
  • SQL Server(插入“ 1”或“ 0”)
  • Sybase(插入'1'或'0')

……而这些数据库将抛出异常:

  • BR
  • 德比
  • H2
  • 英格利斯
  • PostgreSQL
  • SQLite的

SQL标准中的布尔值

值得一提的是,SQL标准在CAST()函数的规范中指定了如何处理从boolean到字符串的转换:

6.13 <cast specification>
[...]
10) If TD is fixed-length character string, then let LTD be the length in charactersof TD.
[...]
e) If SD is boolean, then
Case:
i) If SV is True and LTD is not less than 4, then TV is 'TRUE' extended on the right byLTD–4
s.
ii) If SV is False and LTD is not less than 5,then TV is 'FALSE' extended on the right byLTD–5 <space>s.
iii) Otherwise, an exception condition is raised: data exception — invalid charactervalue for cast.

因此,即使从历史的角度来看,应该接受1/0的行为,但大多数开放源代码数据库都显示了可以被解释为“正确”的行为。 使用开放源代码测试数据库时,请注意此限制!

有关此数据库和H2数据库的更多信息,请参考H2用户组上的该线程 。

参考:来自JAVA,SQL和JOOQ博客的JCG合作伙伴 Lukas Eder 的JDBC布尔兼容性列表 。

翻译自: https://www.javacodegeeks.com/2014/03/the-jdbc-boolean-compatibility-list.html

jdbc和jdbc驱动

jdbc和jdbc驱动_JDBC布尔兼容性列表相关推荐

  1. JDBC布尔兼容性列表

    有趣的是,布尔类型只是在SQL标准后期才引入,即SQL:1999 . 即使在今天,并非所有数据库本身都支持BOOLEAN或BIT类型. 最重要的是,我们仍然可以在Oracle中等待一段时间. 这是20 ...

  2. jdbc驱动_JDBC概述和CRUD

    第八章 JDBC的简介 8.1 简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问 ...

  3. mysql jdbc 驱动名称_【经验分享】常用 JDBC 驱动名字和 URL 列表

    ODBC  driver sun.jdbc.odbc.JdbcOdbcDriver jdbc:odbc:name 用 COM.ibm.db2.jdbc.net.DB2Driver 连接到 DB2 数据 ...

  4. Bootstrap4+MySQL前后端综合实训-Day05-AM【MySQL数据库(SQLyog软件基本操作、架构设计器)、eclipse(JDBC开发-添加驱动、构建路径、增删改查基本测试)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 MySQL数据库--建库.建表 新建连接.测试连接 新建news_manager数据库 ...

  5. jdbc获取一行字符串_JDBC基础

    什么是JDBC?JDBC就是Java程序访问数据库的规范,是一个规范定义接口,各种数据库厂家实现了JDBC这个接口,这些实现类就是数据库驱动,使用时只需要调用接口中的方法即可,不用关注类是如何实现的. ...

  6. 通过jdbc的mysql驱动连接oceanbase mysql模式数据库

    oceanbase mysql模式的实例是完全兼容mysql jdbc驱动的. 如下为tomcat的jdbc.properties的配置: 应用连接mysql数据库的jdbc配置: [ess@loca ...

  7. 老调重弹:JDBC系列之驱动加载原理全面解析)

    前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读 ...

  8. 老调重弹:JDBC系列 之 驱动加载原理全面解析

    前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读 ...

  9. java sql2016驱动_微软发布用于SQL Server 的JDBC 6.0驱动下载 - IT之家

    IT之家讯 微软发布了用于SQL Server数据库的JDBC 6.0驱动下载,该版本为基于Java的SQL Server和Azure SQL数据库提供强大的数据访问性能,相关用户可下载安装(仅英文版 ...

最新文章

  1. IDEA 项目结构旁边出现 0%classes,0% lines covered
  2. ping -a 获取不到主机名_网络测试命令——PING
  3. kuka机器人焊接飞溅大_库卡机器人KCP4示教器屏幕校准方法
  4. 如何在Windows中打开和使用命令提示符
  5. 管理员所有权代码_为什么代码所有权糟透了,您永远不应该在有实践的地方工作...
  6. python二级考试程序题批改_随机生成百以内加减乘除题目并批改
  7. 6月30日云栖精选夜读:程序员技术与文艺的PK_来首届阿里巴巴研发效能嘉年华...
  8. Go语言游戏服务器思维导图
  9. 回顾Gartner 报告:2010年至2017年那些最酷的存储初创公司去哪儿了
  10. 构造函数_析构函数_深拷贝与浅拷贝
  11. Java数据结构与算法(二) 简单排序
  12. day01 格式化输出和while循环的两个小练习
  13. 通过python爬虫程序爬取未来几日的天气状况
  14. 使用cnpm yarn下载依赖后,pdfjs-dist包报错
  15. 小甲鱼 P61 IO缓冲区
  16. SQL SERVER之填充因子
  17. Unity UGUI 字体加粗特效
  18. 2005国内IC Design House一览
  19. C++中的CopyElision
  20. python爬虫爬取网页信息

热门文章

  1. Stack(nowcoder 11253-K)
  2. 【莫队】区间不同数(金牌导航 莫队-1)
  3. 【最短路】【Dijkstra】【图论】最小花费(jzoj 2125)
  4. [清华集训2017]无限之环(网络流)
  5. codeforces gym-101736 Dessert First Strategy 最小割
  6. Sentinel(十八)之注解支持
  7. JavaFX UI控件教程(二)之JavaFX UI控件
  8. MySQL str_to_date()函数
  9. 请用JavaScript实现一个函数,接受一-个IP白名单列表whitelist以及列表ipList
  10. java中部的分页实现(二)