Проблема использования Java PreparedStatement - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть проблема, которую я не могу решить, пытаясь несколько раз сделать как можно больше.

У меня есть таблица X со следующей структурой (из-за удаления и создания столбца):

A  String
B  Int
D  Int
C  Boolean
G  Boolean
E  Int
F  Boolean

Я готовлю подготовленное государство, чтобы попытаться вставить данные в столбцы выше

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.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Я думаю, что вы можете использовать все ключи таблицы и просто установить нужные значения

, как если бы у него было пять элементов, теперь у вас есть семь, вы используете набор из семи элементов

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();
0 голосов
/ 21 декабря 2018

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...