Мне не понятно как запустить произвольный SQL запрос, заданный текстовой строкой, на базе данных устройства. В среде Unwired platform 2.1.3. Существующие варианты не удовлетворяют наши потребности: Возможность конструирования запроса составными частями, но при этом нельзя выполнить вычисления в части select. Возможность выполнения строковых запросов, но при этом необходимо, чтобы возврат строго соответствовал одному из MBO существующих объектов.
В документации описан только такой способ приближенный к динамическим запросам: Query query = new Query(); query.select("x.fname, x.lname, x.surrogateKey, x.id, x.company_name"); query.from("Customer", "x"); .... QueryResultSet rs = SUP101DB.executeQuery(query);
запуск произвольного текстового СКЛ я нашел в сгенерированном коде в виде (немного порезанный вид) : com.sup101.android.mbo.intrnl.CustomerMetaData META_DATA = new com.sup101.android.mbo.intrnl.CustomerMetaData(); com.sybase.sup.client.persistence.EntityDelegate DELEGATE = com.sybase.sup.client.persistence.DelegateFactory.createEntityDelegate("Customer", com.sup101.android.mbo.Customer.class, "SUP101.Customer", META_DATA, com.sup101.android.mbo.SUP101DB.getDelegate()); String _selectSQL = "SELECT x.a .... FROM sup101_1_0_customer x WHERE ... AND x.a = ?"; .... com.sup101.android.mbo.Customer customer = (com.sup101.android.mbo.Customer) DELEGATE.findWithSQL(_selectSQL, dts, values, ids, com.sup101.android.mbo.Customer.class);
то есть можно выполнить запрос но строго в терминах MBO. Попытки изменить число колонок приводят к Exception.
Чтобы было понятно что мне требуется, проще всего представить что мне надо выполнить текстовой запрос вида: String mySQL = "SELECT 2+2, id*99 FROM customer WHERE 2>1 AND id<99999"; QueryResultSet rs = ?????????
Как мне его выполнить?
|
|