码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Postgresql在jdbc处理bit字段的解决方案


    问题:

            bit如果长度为1,则会默认为布尔型(1-true 0-false);

            bit如果长度大于1,则会默认为bit类型,但是代码中以前常用的两种set方式,会报错

    第一种方式:
    ps.setObject(i+1, obj, Types.BIT);

     第二种方式:

    ps.setByte(i+1, Byte.valueOf((String)obj));

     报错内容:

    was aborted: 错误: 字段 "bit55" 的类型为 bit, 但表达式的类型为 boolean
      Hint: 你需要重写或转换表达式
      Position: 1124  Call getNextException to see other errors in the batch.
     

     解决方式:

           第一种:含有bit类型的where条件查询:

            经查阅,发现这个数据库在处理这个字段缺失存在问题,需要我们转换思想,在进行sql预处理的时候,就对bit字段进行转换: CAST(? as BIT(长度))。

            转换的sql也是可以查出值的。

    select * from tb3 where bit55= CAST(B'10' as BIT(2))

     select * from tb4 where bit55= CAST(B'1' as BIT(1));

    第二种:含bit类型的insert或者update入参: 

    对于 ResultSetMetaData 中获取值的时候,也可以用如下方式,将其封装成PGobject :

    1. case -7://可能是bit也可能是boolean
    2. String temp = resultset.getString(i);
    3. if(temp == null){
    4. data.add(null);
    5. }else if(temp.equalsIgnoreCase("F") || temp.equalsIgnoreCase("T")){
    6. data.add(resultset.getBoolean(i));
    7. }else{
    8. if(rsmd.getColumnTypeName(i).equalsIgnoreCase("bit")){
    9. PGobject pGobject = new PGobject();
    10. pGobject.setType(rsmd.getColumnTypeName(i));
    11. pGobject.setValue(resultset.getString(i));
    12. data.add(pGobject);
    13. }else{
    14. data.add(resultset.getBoolean(i));
    15. }
    16. }
    17. break;

    在set的时候,直接用object的方式。

    ps.setObject(i+1,obj);

     结束。

  • 相关阅读:
    【分享】如何自动同步企业微信外部客户信息到CRM系统?
    短视频账号矩阵系统源码/技术源码分享/技术搭建架构
    MongoDB:数据备份的备份和恢复
    数据结构学习:数据结构概念了解
    git同步GitHub,部署GitHubPage
    ArduinoUNO实战-第二十二章-红外遥控实验
    postman做接口测试
    【数据结构】二叉树OJ练习
    【Java】使用Java实现爬虫
    3.2.OpenCV技能树--二值图像处理--图像腐蚀与膨胀
  • 原文地址:https://blog.csdn.net/xhuiting/article/details/134051842
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号