Как получить данные в 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.