我遇到一个无法解决的问题,尝试过多次以尽最大努力。
我有一个具有以下结构的表X
(由于“列”的拖放和创建):
A String
B Int
D Int
C Boolean
G Boolean
E Int
F Boolean
我正在准备一个prepareStatement,尝试将数据插入上述列中
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列中。
答案 0 :(得分:0)
G; DDL中应具有默认值。 对于布尔值,请使用setBoolean或setInt。
// Column G Boolean DEFAULT '0'
try (PreparedStatement pS = con.prepareStatement(
"INSERT IN X (A, B, D, C, E) Values (?, ?, ?, ?, ?)")) {
for (int I = 0; I < 5; I++) {
pS.SetString(1, a);
pS.SetInt(2, 100);
pS.SetInt(3, 100);
pS.SetBoolean(4, false);
pS.SetInt(5, 200);
pS.AddBatch();
}
pS.executeBatch();
}
答案 1 :(得分:0)
我认为您可以使用所有表键并只需设置所需的值
好像它有五个元素,现在您有七个,使用一组七个元素
for (I=0 ; I < 5 ; I++) {
pS = INSERT IN X (A, B, C,D, E,F,G ) 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.SetString (6,200);
pS.SetString (7,200);
ps.AddBatch();
}
ps.executeBatch();