Я изо всех сил пытался обновить и удалить записи в 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 ();
Я потратил довольно многовремя с этим, и сейчас мой ум поражает.
Пожалуйста, помогите.Заранее благодарю.