当前位置: 首页 > news >正文

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 :

case -7://可能是bit也可能是booleanString temp = resultset.getString(i);if(temp == null){data.add(null);}else if(temp.equalsIgnoreCase("F") || temp.equalsIgnoreCase("T")){data.add(resultset.getBoolean(i));}else{if(rsmd.getColumnTypeName(i).equalsIgnoreCase("bit")){PGobject pGobject = new PGobject();pGobject.setType(rsmd.getColumnTypeName(i));pGobject.setValue(resultset.getString(i));data.add(pGobject);}else{data.add(resultset.getBoolean(i));}}break;

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

ps.setObject(i+1,obj);

 结束。

http://www.lryc.cn/news/208090.html

相关文章:

  • ESMapping字段
  • 基于LDA的隐式标签协同过滤推荐算法_文勇军
  • 在线设计数据库表用Itbuilder,极简易用真香!!!
  • onclick事件的用法
  • 二叉排序树
  • 探秘Spring的设计精髓,深入解析架构原理
  • Python Wordcloud报错:Only supported for TrueType fonts,多种解决方案
  • 为虚拟网络提供敏捷负载均衡:Everoute LB 特性解读
  • Jmeter 接口测试,参数值为列表,如何参数化?
  • DeepinV20实现使用CapsLock键切换输入法
  • 基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】计算机毕业设计
  • WordPress主题模板 大前端D8 5.1版本完整开源版源码简洁大气多功能配置
  • 如何在Postman中使用静态HTTP
  • vscode 提升Vue开发效率的必备插件与工具
  • mysql/java/springboot/javaweb请假系统,分为学生/辅导员/超级管理员
  • Android11系统桌面隐藏指定APP图标
  • WEB使用百度地图展示某地地址
  • 22年上半年下午题
  • 大文件分片上传-续传-秒传(详解)
  • CE-LVD证书跟CE-EMC证书有什么区别?
  • 使用Mapster实现双向映射,解放搬砖体力活
  • 一种基于屏幕分辨率的RTSP主子码流切换的多路视频监控的播放方案
  • SpringBoot日志+SpringMVC+UUID重命名文件+Idea热部署
  • 向日葵远程控制中的键盘异常问题
  • 【iOS免越狱】利用IOS自动化web-driver-agent_appium-实现自动点击+滑动屏幕
  • 聊聊“JVM 调优JVM 性能优化”是怎么个事?
  • 再获Gartner认可!持安科技获评ZTNA领域代表供应商
  • 微服务-Feign
  • jsp获取数据 jsp直接获取后端数据 获取input选中的值 单选 没 checked属性
  • React 中 keys 的作用是什么?