Обновления и удаления, не работающие с DB2 в XPages - PullRequest
0 голосов
/ 09 февраля 2012

Я изо всех сил пытался обновить и удалить записи в DB2 из XPages, используя JDBC в библиотеке расширений 853.

Во-первых, я могу подтвердить, что @JDBCInsert работает отлично.Я также могу просматривать данные из DB2 разными способами.Однако при попытке выполнить обновление или удаление оно просто не работает.

Моя первая попытка была с использованием источника данных JDBCRowSet.Идея состояла в том, чтобы поработать с кэшированным набором результатов, а затем в конце зафиксировать изменения в DB2.Мне удалось манипулировать кэшированным набором результатов, изменив значения и выполнив удаление, но когда я запускаю функцию dataset.acceptChanges (), я получаю следующее сообщение:

Ошибка вызова метода 'acceptChanges ()'on java class' com.ibm.xsp.extlib.jdbc.model.JdbcRowSetAccessor '

Другое сообщение из журнала:

Ошибка SQL DB2: SQLCODE =-270, SQLSTATE = 42997, SQLERRMC = 53, DRIVER = 3,57,82

Я вхожу в DB2 как администратор, поэтому это не может быть проблемой доступа, особенно из-за того, что я могу вставлять записи.Я попытался использовать Control Manager Control и установить AutoCommit = true, но это не меняет возвращаемую ошибку.

Итак, моей следующей попыткой было выполнение обновлений с использованием @JDBCUpdate вместо работы с кэшированнымНабор результатов.Эта функция не работает, но также не возвращает ошибок.Это почти как будто ничего не делает.

Наконец, я попытался @JDBCExecuteQuery выполнить обновление, но я получил возвращаемое сообщение о том, что мне не разрешено выполнять обновления с использованием этой функции.

Вот несколько примеров того, что я попробовал, но это не удалось:

// Вот значения, которые я хочу изменить, и которые я анализирую как JSON.

    var v = {
        VENUE_NAME: getComponent("inputVenue").getValue(),
        ADDRESS: getComponent("inputTextareaAddress").getValue(),
        TEL_NUMBER: getComponent("inputTelNumber").getValue(),      
        CELL_NUMBER: getComponent("inputCellNumber").getValue(),
        EMAIL: getComponent("inputEmail").getValue(),
        RATE: getComponent("inputRate").getValue(),
        INCLUDES: getComponent("checkIncludes").getValue()
    }

@JdbcUpdate ("db2", "TABLE", v, "ID = 123");

@ JdbcUpdate ("db2", "TABLE", v, "ID = '123'");

// Эта функция вставки, использующая тот же массив JSON, работает.

@ JdbcInsert ("db2", "TABLE", v);

// Я использую это при попытке зафиксировать изменения, используя RowSet, который возвращает вышеуказанные сообщения об ошибках

JDBCRowSet.acceptChanges ();

Я потратил довольно многовремя с этим, и сейчас мой ум поражает.

Пожалуйста, помогите.Заранее благодарю.

1 Ответ

0 голосов
/ 09 февраля 2012

Мне еще предстоит попробовать эту часть ext lib, однако я заметил, что ваш синтаксис отличается от того, что я помню, он выглядит так:

@JdbcUpdate("dt2","users",v,"id=?",id)

в этой документации.

http://library.constantcontact.com/download/get/file/1102786224071-334/2011NOV18+XPages+Goes+Relational.pdf

...