Postgresql在jdbc处理bit字段的解决方案

news2024/12/24 7:01:26

问题:

        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也可能是boolean
                    String 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.coloradmin.cn/o/1135840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vm_flutter

附件地址 https://buuoj.cn/match/matches/195/challenges#vm_flutter 可以在buu下载到。 flutter我也不会,只是这个题目加密算法全部在java层,其实就是一个异或和相加。 反编译 package k;import java.util.Stack;/* loaded from: classes.dex */ pu…

传智教育研究院重磅发布Java学科新研发《智慧养老》项目

在招聘Java开发人才的过程中,企业往往对候选人的项目经验有着严格的要求,项目经验成为顺利就业的重要敲门砖之一。而在数字化技术的学习中,如何让学员通过项目课程有效地积累实战开发经验,就成了数字化技术职业教育的一个重大难点…

EasyRecovery2024破解版数据恢复软件下载

当我们处理重要的文件数据时,遇到突然停电导致数据来不及保存,再次打开电脑后,此前处理的数据可能丢失,这无疑会影响我们的工作进度,数据恢复软件在此时就派上用场,那么下面就来具体介绍EasyRecovery软件的…

EasyRecovery2024破解版激活码

当我们处理重要的文件数据时,遇到突然停电导致数据来不及保存,再次打开电脑后,此前处理的数据可能丢失,这无疑会影响我们的工作进度,数据恢复软件在此时就派上用场,那么下面就来具体介绍EasyRecovery软件的…

5G与医疗:开启医疗技术的新篇章

5G与医疗:开启医疗技术的新篇章 随着5G技术的快速发展和普及,它已经在医疗领域产生了深远的影响。5G技术为医疗行业提供了更高效、更准确、更及时的通信方式,从而改变了医疗服务的模式和患者的体验。本文将探讨5G技术在医疗领域的应用场景、优…

10月《中国数据库行业分析报告》已发布,深度剖析甲骨文大会Oracle技术新趋势

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生…

k8s快速部署nacos2.2.0集群

nacos2.2.0集群部署。nacos-headless内部集群端口服务,nacos-service为了方便ingress转发提供给用户web界面操作,requiredDuringSchedulingIgnoredDuringExecution强制反亲和禁止同一个节点部署nacos实列。 1、数据库导入nacos的sql # 创建数据库 crea…

一文详解多模态大模型发展及高频因子计算加速GPU算力 | 英伟达显卡被限,华为如何力挽狂澜?

★深度学习、机器学习、多模态大模型、深度神经网络、高频因子计算、GPT-4、预训练语言模型、Transformer、ChatGPT、GenAI、L40S、A100、H100、A800、H800、华为、GPU、CPU、英伟达、NVIDIA、卷积神经网络、Stable Diffusion、Midjourney、Faster R-CNN、CNN 随着人工智能技术…

Java 音频处理,音频流转音频文件,获取音频播放时长

1.背景 最近对接了一款智能手表,手环,可以应用与老人与儿童监控,环卫工人监控,农场畜牧业监控,宠物监控等,其中用到了音频传输,通过平台下发语音包,发送远程命令录制当前设备音频并…

新手入门?初登开发者舞台的你所适合的三大开发工具?

对新手开发者来说,工具的简洁性和实用性和自己的产出直接挂钩,一个好用的工具往往会让编译代码减少很多麻烦,有哪些比较适合的工具,几乎成了每个新人必定会问的问题之一。 针对这些疑惑,今天就来讲讲三大新手型开发工…

CQ 社区版 V2.5.0 发布 | 开放在线试用、自定义高危操作、新增数据源Phoenix、Trino等

HELLO,大家好啊~ 很高兴又到每月发版时间! 本月发布 CloudQuery 2.x 系列的第六个版本。V2.5.0 从多个模块进行了功能完善和优化,具体内容我们一起往下看! 本次更新快览: 新增数据源:Phoenix、Trino新增…

Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松

《PrometheusGrafanaNodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松》 一、概述 本文使用PrometheusGrafanaNode Exporter搭建Linux主机监控系统: Prometheus 是一个监控系统,可以收集和存储来自各个目标的指标数…

strerror和perror

文章目录 strerrorperror strerror 当一个函数运行错误时,它会将对应的错误码存放在一个int类型的全局变量errno中,strerror函数是将错误码转化成错误信息的函数,参数是一个int类型的errno错误码,返回值为错误信息的首地址。 #in…

数据库管理开发Navicat Premium中文

Navicat Premium是一款全面而高效的数据库管理和开发工具,支持多种主流数据库系统,如MySQL、Oracle、PostgreSQL等。它提供了直观易用的图形用户界面和一系列强大的功能,如数据建模、查询、导入/导出、备份/恢复、同步等,帮助用户…

2023年【广东省安全员A证第四批(主要负责人)】试题及解析及广东省安全员A证第四批(主要负责人)模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 广东省安全员A证第四批(主要负责人)试题及解析是安全生产模拟考试一点通生成的,广东省安全员A证第四批(主要负责人)证模拟考试题库是根据广东省安全员A证第四…

时序预测 | Python实现ARIMA-LSTM自回归移动差分模型结合长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-LSTM自回归移动差分模型结合长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-LSTM自回归移动差分模型结合长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Python实现ARIMA-LSTM自…

el-table多选表格 实现默认选中 删除选中列表取消勾选等联动效果

实现效果如下&#xff1a; 代码如下&#xff1a; <template><div><el-tableref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"selection-change"handleSelectionChange"><…

HarmonyOS 快速入门TypeScript

1.什么是TypeScript&#xff0c;它和JavaScript&#xff0c;ArkTs有什么区别 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发…

CSS隐藏元素的N种方法,你知道哪一种最适合你?

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、前…

(免费领源码)java#Springboot#mysql装修选购网站99192-计算机毕业设计项目选题推荐

摘 要 随着科学技术&#xff0c;计算机迅速的发展。在如今的社会中&#xff0c;市场上涌现出越来越多的新型的产品&#xff0c;人们有了不同种类的选择拥有产品的方式&#xff0c;而电子商务就是随着人们的需求和网络的发展涌动出的产物&#xff0c;电子商务网站是建立在企业与…