首页 > 数据库 >求教Postgresql在jdbc处理bit(1)字段的预处理解决方案

求教Postgresql在jdbc处理bit(1)字段的预处理解决方案

时间:2024-07-25 16:28:09浏览次数:16  
标签:jdbc Postgresql String postgres sql bit password pstmt

文章目录


1.建表语句:

CREATE TABLE public.h_user (
	id serial4 not null,
	username varchar(50) NULL,
	"password" varchar(64) NULL,
	nickname varchar(60) NULL,
	email varchar(255) NULL,
	gender bit(1) NULL,
	height float4 NULL,
	CONSTRAINT user_pkey PRIMARY KEY (id)
);

2.使用以下方式的预处理方式都报错了

求指教怎么使用预处理PreparedStatement 设置bit(1)的值插入到库中。

package com.health.util;
import java.sql.*;

public class bitTest {
        public static void main(String[] args) {
            // 数据库连接信息
            String url = "jdbc:postgresql://localhost:5432/postgres";
            //加 tinyInt1isBit=false 参数也是报错
//            String url = "jdbc:postgresql://localhost:5432/postgres?tinyInt1isBit=false";
            String username = "postgres";
            String password = "postgres";

            // SQL语句
            String sql = "insert into h_user (username, password, gender,height) values(?,?,?,?)";
            try {
                // 加载并注册JDBC驱动
                Class.forName("org.postgresql.Driver");
                // 建立数据库连接
                try (Connection conn = DriverManager.getConnection(url, username, password);
                     // 创建PreparedStatement
                     PreparedStatement pstmt = conn.prepareStatement(sql)) {
                    pstmt.setString(1, "ztt");
                    pstmt.setString(2, "123456");
                    // 设置bit(1)值,这里下面设置的情况都报错
//                    pstmt.setObject(3, new Boolean(true));
//                    pstmt.setObject(3, true,Types.BIT);
//                    pstmt.setObject(3,new Byte("1"));
//                    pstmt.setObject(3, new Short("1"),Types.BIT);
//                    pstmt.setObject(3,1);
                    pstmt.setObject(3,1,Types.BIT);
                    pstmt.setFloat(4, 170);
                    // 执行SQL语句
                    pstmt.executeUpdate();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
}

3.可以先用sql拼接实现功能

package com.health.util;
import java.sql.*;

public class bitTest {

        public static void main(String[] args) {
            // 数据库连接信息
            String url = "jdbc:postgresql://localhost:5432/postgres";
            String username = "postgres";
            String password = "postgres";

            // SQL语句  也可以把0::bit替换成cast(1 as bit(1))也可设置成功
            String sql = "insert into h_user (username, password, gender,height) values('ztt1','123',0::bit,172)";
            try {
                // 加载并注册JDBC驱动
                Class.forName("org.postgresql.Driver");
                try (Connection conn = DriverManager.getConnection(url, username, password);
                     // 创建Statement
                     Statement stat = conn.createStatement()) {
                    // 执行SQL语句
                    int result = stat.executeUpdate(sql);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
}

标签:jdbc,Postgresql,String,postgres,sql,bit,password,pstmt
From: https://blog.csdn.net/weixin_44231698/article/details/140682745

相关文章

  • leetcode 1555 银行账号概要(postgresql)
    需求用户表:Users±-------------±--------+|ColumnName|Type|±-------------±--------+|user_id|int||user_name|varchar||credit|int|±-------------±--------+user_id是这个表的主键。表中的每一列包含每一个用户当前的额度信息。交易......
  • leetcode 1549 每件商品的最新订单(postgresql)
    需求表:Customers±--------------±--------+|ColumnName|Type|±--------------±--------+|customer_id|int||name|varchar|±--------------±--------+customer_id是该表主键.该表包含消费者的信息.表:Orders±--------------±--------+|......
  • 【YashanDB数据库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIE
    问题现象客户的java日志中有如下异常信息:问题的风险及影响对正常的业务流程无影响,但是影响druid的mergesql功能(此功能会将sql语句中的字面量替换为绑定变量,然后将替换以后的sql视为同一个,然后用做执行性能统计)问题影响的版本与yashandb版本无关问题发生原因druid源码中在......
  • PostgreSQL学习笔记----GUC机制
    GUC介绍在守护进程Postmaster初始化内存环境之后,需要配置Postmaster运行时所需的各种参数。GUC(GrandUnifedConfiguralion)模块实现了多种数据类型(目前有boolean、int、real、string、enum五种)的变量配置。这些参数可能会由不同的进程在不同的时机进行配置,系统会根据......
  • gitlab12-postgresql-主备
    gitlab-postgresql-12.3一、简介1、gitlab仅支持postgresql数据库管理系统,因此,数据库服务器有两个选项可用于linux软件包安装:使用Linux软件包安装附带的打包PostgreSQL服务器(不需要配置,推荐)使用外部postgresql服务器,(需要配置,并且需要手动为数据库设定种子)2、本章节......
  • 将非常大的数据插入 PostgreSQL 表的更好方法
    将非常大的数据插入PostgreSQL表的更好方法是什么?操作系统:Ubuntu22.04LTS数据库:PostgreSQL14框架:Python3.11Django现在我使用insertinto语句一次100,000行。平均插入1,000,000行整个过程需要2分钟,在我可以接受的范围内。但我想知道是否有更好的方法......
  • Jmeter取样器--- JDBC request
    以mysql为例1、将访问mysql的jdbc的jar包放入jmeter\lib\ext目录下,如E:\JMeter\apache-jmeter-5.6.3\lib\ext,重新启动jmeter。驱动下载地址:MySQL::DownloadMySQLConnector/J(ArchivedVersions)2、添加配置元件“JDBCConnectionConfiguration”,如图所示3、JDBCConne......
  • PostgreSQL数据库常用命令
    1.登录PostgreSQL数据库:psql-Upostgres-hlocalhost-p5432mydatabase2.登陆到指定数据库psql-Uroot-dmydatabase;3.查看表和数据:3.1列出所有数据库:\l3.2连接到数据库:\cmydatabase3.3列出当前数据库的所有表:\dt3.4查看某个表的内容:SELECT*FR......
  • 【C语言基础习题】C语言练习题——bite 寒假班作业(4)
    C语言练习题——bite寒假班作业(4)题目第1题(单选题)题目名称:下面代码执行的结果是:()#include<stdio.h>intmain(){inti=0;for(i=0;i<10;i++){if(i=5)printf("%d",i);}return0;}题目内容:A.12345678910B.5555555555C......
  • shardingjdbc 使用记录
    注意几个概念:数据源,数据源别名(shardingjdbc的配置会给每个数据源配置别名)db实例(物理概念),逻辑库如果db实例是同一个的话,那么可以只配置一个数据源,通过shardingjdbc的路由策略来路由到具体的逻辑库。这样可以降低db的连接数。  配置了hint的路由策略,但是没有生效,断点......