【发布时间】:2018-12-21 12:05:01
【问题描述】:
我有一个问题,我多次尝试尽可能多地解决,但无法解决。
我有一个表X 具有以下结构(由于列删除和创建):
A String
B Int
D Int
C Boolean
G Boolean
E Int
F Boolean
我正在准备一个preparedStatement来尝试将数据插入到上面的列中
for (I=0 ; I < 5 ; I++) {
pS = INSERT IN X (A, B, D, C, E ) Values (?,?,?,?,?);
//Observer the query.
pS.SetString (1,a);
pS.SetString (2,100);
pS.SetString (3,100);
pS.SetString (4,0);
pS.SetString (5,200);
ps.AddBatch();
}
ps.executeBatch();
但是我得到一个错误
java.sql.BatchUpdateException: ORA-12899: 列“G”的值太大(实际:3,最大值:1)
即使我不想根据查询在 G 列中输入任何内容,为什么它会尝试插入 G 列。
【问题讨论】:
-
可以为布尔字段设置默认
o。 -
发布表的 DDL(
create table语句)。BOOLEAN不是有效的 Oracle 类型。可能的解释,你有一个VARCHAR2(1)column 和一个试图插入'YES'的触发器;) -
列 G 可以为空吗?
-
是的 G 列可以为空。该列也是 VARCHAR2(1 CHAR)
-
问题不在于列我看到的问题是虽然我的查询没有引用 G 列但因为 G 列是第 5 列和 pS.SetString (5,200);正在尝试插入第 5 列????这是我的假设。
标签: java sql oracle prepared-statement