Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle将xls中的行插入数据库会给出ORA-12899:对于“列”而言,值太大;AFSWEB"&引用;BD“车辆温度1”&引用;DIVI“;_Java_Oracle_Jdbc_Apache Poi_Poi Hssf - Fatal编程技术网

Java Oracle将xls中的行插入数据库会给出ORA-12899:对于“列”而言,值太大;AFSWEB"&引用;BD“车辆温度1”&引用;DIVI“;

Java Oracle将xls中的行插入数据库会给出ORA-12899:对于“列”而言,值太大;AFSWEB"&引用;BD“车辆温度1”&引用;DIVI“;,java,oracle,jdbc,apache-poi,poi-hssf,Java,Oracle,Jdbc,Apache Poi,Poi Hssf,我有一张桌子 create table BD_VEHICLES_TEMP_1 ( CONTRACT_NO VARCHAR2(16) not null, ELIMINATED_FLG VARCHAR2(1), ELIMINATION_CODE VARCHAR2(2), PUBLISHED VARCHAR2(1), BD_GRP_ID VARCHAR2(10), EMD

我有一张桌子

create table BD_VEHICLES_TEMP_1
(
  CONTRACT_NO           VARCHAR2(16) not null,
  ELIMINATED_FLG        VARCHAR2(1),
  ELIMINATION_CODE      VARCHAR2(2),
  PUBLISHED             VARCHAR2(1),
  BD_GRP_ID             VARCHAR2(10),
  EMD                   NUMBER(8),
  VALUATION_PRICE       NUMBER(8),
  DIVI                  VARCHAR2(2),
)
我做了一个对应的豆子

并将其属性的值设置为

bean.setDIVI(row.getCell(27).getNumericCellValue()+"");
然而,在将bean插入数据库时,我得到了以下错误

ORA-12899: value too large for column "AFSWEB"."BD_VEHICLES_TEMP_1"."DIVI" (actual: 4, maximum: 2)
我知道这和列的大小有关。DIVI的excel表格中的数据为11,13,45,67。。以此类推,所有2位数字

原因可能是什么?解决办法是什么


提前谢谢

尝试打印分配的值,以便查看传递到数据库的内容:

String value = row.getCell(27).getNumericCellValue()+""; 
// or Integer.toString(row.getCell(27).getNumericCellValue()) 
System.out.println("'" + value + "'");
同时显示您的JDBC语句


它可能与Unicode有关吗?UTF16将使字符串的长度加倍。

尝试打印指定的值,以便查看传递到数据库的内容:

String value = row.getCell(27).getNumericCellValue()+""; 
// or Integer.toString(row.getCell(27).getNumericCellValue()) 
System.out.println("'" + value + "'");
同时显示您的JDBC语句

它可能与Unicode有关吗?UTF16将使字符串的长度加倍。

从中,您将看到它返回一个
double
。您似乎试图使用一种非常奇怪的技术将其转换为字符串,而您选择的
double+“”
方式很可能会生成长字符串,因为double通常在小数点后有很多数字

从表定义中:

DIVI                  VARCHAR2(2),
我推测您正在尝试将数字单元格转换为两位数字符串。我不知道你为什么要这样做,而不是在数据库中存储一个
整数,但我希望你有一个好的理由。。。。假设是这样的话,你应该做一些类似的事情

从中,您将看到它返回一个
double
。您似乎试图使用一种非常奇怪的技术将其转换为字符串,而您选择的
double+“”
方式很可能会生成长字符串,因为double通常在小数点后有很多数字

从表定义中:

DIVI                  VARCHAR2(2),
我推测您正在尝试将数字单元格转换为两位数字符串。我不知道你为什么要这样做,而不是在数据库中存储一个
整数,但我希望你有一个好的理由。。。。假设是这样的话,你应该做一些类似的事情