Как получить данные в Java из Memo поля, используя базу данных прогресса

Как получить данные в Java из Memo поля, я использую базу данных прогресса. Но это дает ошибку:

[DataDirect-Technologies][ODBC PROGRESS driver][PROGRESS]Column Doc_Desc in table PUB.GLDOCHDR has value exceeding its max length or precision.

Написал код, подобный этому sql:

selectSQL="select Doc_Desc from PUB.GLDOCHDR where Doc_Desc like '%:%' and Doc_Desc like '%@%'";

Получение данных как это:

rs = stmt.executeQuery(selectSQL);
while( rs.next())
{
    BufferedReader br = new BufferedReader(new InputStreamReader(rs.getAsciiStream("Doc_Desc")));                   
    System.out.println(br.readLine());
}

1 ответ

Решение

Progress (OpenEdge) имеет две "личности" - SQL и 4GL.

Механизм 4GL (или "ABL") используется чаще всего, и ему все равно, насколько широк поле. Все данные переменной ширины. Ширина - это всего лишь предложение для целей форматирования отображения, которое программисты обычно игнорируют.

Естественно, это дает инструменты SQL подходит.

Существует инструмент для облегчения вашей боли - "dbtool" отсканирует базу данных и отрегулирует "sql-width", чтобы отразить фактическую максимальную ширину, которую он находит в данных. Это обычно выполняется на регулярной основе (обычно еженедельно или ежемесячно) в большинстве магазинов Progress, которые используют SQL.

http://knowledgebase.progress.com/articles/Article/P24496

http://knowledgebase.progress.com/articles/Article/P159769

Другие вопросы по тегам