项目中出于特殊需要,设计了表中字段有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的数组对象直接插到表中,所以还是继续等人回答,希望能有更好的方法。
相关推荐
本篇文章将详细介绍如何在MyBatis中调用PostgreSQL存储过程,尤其是如何处理数组类型的入参。 PostgreSQL数据库支持多种数据类型,包括数组类型。例如,我们可以创建一个名为`func_arr_update`的自定义函数,它接受...
在模型(model)中使用PostgreSQL数组类型,假设我们有一个`User`模型,其中`nicknames`字段是数组类型。创建对应的迁移文件如下: ```ruby create_table :users do |t| t.string :first_name t.string :last_name ...
在 PostgreSQL 中提供了强大的数组处理功能,包括数组与字符串之间的转换: - 使用 `lpad` 和 `rpad` 函数可以在字符串的左边或右边添加指定字符直到达到指定长度 - `string_to_array` 函数可以将字符串转换为数组 ...
PostgreSQL客户端和用于Golang的ORM :red_... sql.NullBool,sql.NullString,sql.NullInt64,sql.NullFloat64和 。 和接口。 默认情况下,结构,地图和数组被编组为JSON。 PostgreSQL使用和多维数组。 Hstore使用和。
- 包括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)类型,可以存储大量二进制数据。 其次...
public static int executeUpdate(String sql, Object[] params) { int result = -1; try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) { if (conn != null) { // 创建...
1. **类型系统**:PHP5引入了类型提示,允许函数参数和类属性指定预期的数据类型,如`int`, `string`, `array`, `bool`等。此外,还引入了弱类型变量,如`null`,它可以是任何类型,以及`object`类型,用于表示对象...
1. **完整的PostgreSQL功能支持**:PGX支持PostgreSQL的多种数据类型,如JSONB、HSTORE、数组等,以及事务、复制、预编译语句( Prepared Statements)、批处理查询等功能。 2. **并发性能**:Go语言的并发模型在...
PHP支持以下数据类型:整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)、对象(object)、NULL以及资源(resource,通常用于外部系统,如数据库连接)。 4. PHP字符串处理: PHP...
2. **变量和数据类型**:PHP5引入了类型声明,允许开发者定义变量的数据类型,如int、string、bool、array和object。此外,还增加了NULL类型,表示变量未定义或已清空。 3. **变量作用域**:在PHP5中,有四种变量...
2. **数据类型**: PHP支持多种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)和对象(object)等。 3. **函数库**: PHP拥有丰富的内置函数,涵盖了字符串处理、...
PHP 7.3引入了弱类型和强类型的特性,例如`int`, `float`, `string`, `bool`, `array`, `object`, `null`和`resource`。此外,PHP 7.3.8增强了类型提示,使得函数参数和返回值可以指定类型,提高了代码的可读性和...
4. **数据类型**:PHP支持多种数据类型,包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)和对象(object)等。 5. **字符串处理**:PHP提供了丰富的字符串处理函数,如strlen...
- PHP有七种基本数据类型:整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)、对象(object)和NULL。 4. **变量** - PHP变量以美元符号`$`开头,无需预先声明,可直接使用。 - ...
2. 数据类型:包括整型(int)、浮点型(float)、字符串(string)、布尔型(bool)、数组(array)、对象(object)、NULL(null)等。 3. 控制结构:包括条件语句(if...else...、switch...case...)、循环语句...
- 字符串(string) - 布尔型(bool) - 数组(array) - 对象(object) - NULL - 资源(resource,常用于数据库连接) ### 5. 控制结构 - **条件语句**:`if...else`、`switch`用于基于不同条件执行不同代码块。...