0 0

postgresql中的数组型(int[],String[],等等)0

项目中出于特殊需要,设计了表中字段有int[]类型的

后台通过jdbc对sql语句进行set和get时该怎么做:

String insert = "insert into tb_array_test values(?,?)";
PreparedStatement stmt=null; 
try 
 { 
    stmt = conn.prepareStatement(insert);
    stmt.setInt( 1, 2 );

    // 对于phone这个数组的set尝试了多种方法,例举如下:
    int[] phone = {235,236};
    stmt.setObject( 2, phone );  //失败,编译正常,但是运行时报错

    String arr = "{" + phone[0] + "," + phone[1] + "}";
    stmt.setString( 2, arr ); //失败,编译正常,运行报错(org.postgresql.util.PSQLException: 错误: 字段 "phone" 的类型为 bigint[], 但表达式的类型为 character varying
  建议:你需要重写或转换表达式)
    
    int[] phone = {235,236};
    stmt.setArray( 2, phone );  //失败,编译出错(setArray需要的参数是int,Array,但是我传的是int,int[])


我个人认为应该是使用setArray这个方法,但是这个方法的参数Array我不知道怎么构造,传int[]是不对的,网上查了资料,说是这里的Array不是java的类,而是sql提供的,各个厂商有不同的Array构造方法,可惜我还是没查到postgresql的这个Array构造方法,请问有人知道吗?

或者说谁知道这个setArray到底怎么个用法,以前从来没试过db表里用数组类型的。

问题补充:自己刚试出来一个办法,有点土,修改insert的sql语句
String insert = "insert into tb_array_test values(?,array[?,?])";
然后对phone这个数组类型就行分次set:
stmt.setInt( 1, 3 );// id的值
stmt.setInt( 2, 335 );// phone[0]的值
stmt.setInt( 3, 336 );// phone[1]的值
但是这样子太麻烦了,而且也失去了我在tb中使用数组类型的意义,我觉得最好还是能有办法将一个java的数组对象直接插到表中,所以还是继续等人回答,希望能有更好的方法。
2012年11月30日 17:15

2个答案 按时间排序 按投票排序

0 0

请问最后找到了解决方法了吗?

2014年12月24日 19:07
0 0

自己写个方法循环一下把这块操作通用化了就解决了

2012年12月02日 00:09

相关推荐

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    本篇文章将详细介绍如何在MyBatis中调用PostgreSQL存储过程,尤其是如何处理数组类型的入参。 PostgreSQL数据库支持多种数据类型,包括数组类型。例如,我们可以创建一个名为`func_arr_update`的自定义函数,它接受...

    简单介绍Ruby on Rails对PostgreSQL数组类型的支持

    在模型(model)中使用PostgreSQL数组类型,假设我们有一个`User`模型,其中`nicknames`字段是数组类型。创建对应的迁移文件如下: ```ruby create_table :users do |t| t.string :first_name t.string :last_name ...

    sqlserver转PG经验总结及PG的一些特性

    在 PostgreSQL 中提供了强大的数组处理功能,包括数组与字符串之间的转换: - 使用 `lpad` 和 `rpad` 函数可以在字符串的左边或右边添加指定字符直到达到指定长度 - `string_to_array` 函数可以将字符串转换为数组 ...

    pg:Golang ORM,主要关注PostgreSQL功能和性能

    PostgreSQL客户端和用于Golang的ORM :red_... sql.NullBool,sql.NullString,sql.NullInt64,sql.NullFloat64和 。 和接口。 默认情况下,结构,地图和数组被编组为JSON。 PostgreSQL使用和多维数组。 Hstore使用和。

    《C#语言和SQL数据库技术基础》试卷

    - 包括Oracle、MySQL、Microsoft SQL Server和PostgreSQL等关系型数据库管理系统。 ### 简答题解析 1. **T-SQL四类语句语法** - DDL(数据定义语言),如`CREATE DATABASE`、`CREATE TABLE`; - DML(数据操纵...

    数据库存储读取图片

    常见的关系型数据库如MySQL、PostgreSQL、SQL Server和Oracle都支持存储BLOB(Binary Large Object)类型的数据,适合存放图片。这里以SQL Server为例,它提供了VARBINARY(MAX)类型,可以存储大量二进制数据。 其次...

    java中实现增删改sql数据库中的数据的通用(一个方法)方法

    public static int executeUpdate(String sql, Object[] params) { int result = -1; try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) { if (conn != null) { // 创建...

    php5中文参考手册

    1. **类型系统**:PHP5引入了类型提示,允许函数参数和类属性指定预期的数据类型,如`int`, `string`, `array`, `bool`等。此外,还引入了弱类型变量,如`null`,它可以是任何类型,以及`object`类型,用于表示对象...

    开源项目-jackc-pgx.zip

    1. **完整的PostgreSQL功能支持**:PGX支持PostgreSQL的多种数据类型,如JSONB、HSTORE、数组等,以及事务、复制、预编译语句( Prepared Statements)、批处理查询等功能。 2. **并发性能**:Go语言的并发模型在...

    一个php我顶程序一个php我顶程序

    PHP支持以下数据类型:整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)、对象(object)、NULL以及资源(resource,通常用于外部系统,如数据库连接)。 4. PHP字符串处理: PHP...

    PHP5中文手册

    2. **变量和数据类型**:PHP5引入了类型声明,允许开发者定义变量的数据类型,如int、string、bool、array和object。此外,还增加了NULL类型,表示变量未定义或已清空。 3. **变量作用域**:在PHP5中,有四种变量...

    PHP中文帮助手册.rar

    2. **数据类型**: PHP支持多种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)和对象(object)等。 3. **函数库**: PHP拥有丰富的内置函数,涵盖了字符串处理、...

    php7.3.8手册(官网).zip

    PHP 7.3引入了弱类型和强类型的特性,例如`int`, `float`, `string`, `bool`, `array`, `object`, `null`和`resource`。此外,PHP 7.3.8增强了类型提示,使得函数参数和返回值可以指定类型,提高了代码的可读性和...

    php开发文档大全

    4. **数据类型**:PHP支持多种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)和对象(object)等。 5. **字符串处理**:PHP提供了丰富的字符串处理函数,如strlen...

    php基础知识树形图

    - PHP有七种基本数据类型:整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)、对象(object)和NULL。 4. **变量** - PHP变量以美元符号`$`开头,无需预先声明,可直接使用。 - ...

    php中文参考手册.zip

    2. 数据类型:包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)、对象(object)、NULL(null)等。 3. 控制结构:包括条件语句(if...else...、switch...case...)、循环语句...

    PHP中文简易教程

    - 字符串(string) - 布尔型(bool) - 数组(array) - 对象(object) - NULL - 资源(resource,常用于数据库连接) ### 5. 控制结构 - **条件语句**:`if...else`、`switch`用于基于不同条件执行不同代码块。...

Global site tag (gtag.js) - Google Analytics