У меня есть большой CLOB (больше чем 32 КБ), которые я хочу считать в Строку, с помощью StringBuilder. Как я делаю это самым эффективным способом? Я не могу использовать "международную длину" конструктор для StringBuilder, так как длина моего CLOB длиннее, чем "интервал" и нуждается в "длинном" значении.
Я не настолько доволен классами ввода-вывода Java и хотел бы получить некоторое руководство.
Редактирование - я попробовал этим кодом для clobToString ():
private String clobToString(Clob data) {
StringBuilder sb = new StringBuilder();
try {
Reader reader = data.getCharacterStream();
BufferedReader br = new BufferedReader(reader);
String line;
while(null != (line = br.readLine())) {
sb.append(line);
}
br.close();
} catch (SQLException e) {
// handle this exception
} catch (IOException e) {
// handle this exception
}
return sb.toString();
}
Я не могу использовать конструктор "int length" для
StringBuilder
, так как длина моего CLOB больше, чемint
и мне нужно значениеlong
.
Если длина CLOB больше, чем помещается в int, то данные CLOB также не поместятся в строку. Для работы с таким большим количеством XML-данных придется использовать потоковый подход.
Если фактическая длина CLOB меньше, чем Integer.MAX_VALUE
, просто заставьте long
в int
, поставив (int)
перед ним.
Какие версии Windows вы хотите нацелиться?
Я считаю, что нет простого способа. Для Windows XP есть Джина . Для Windows Vista есть «провайдеры учетных данных».
Кроме того, если вы нацеливаете Windows XP, вы можете создать сервис, который отправляет нажатий нажатий на настольный компьютер WinLogon, чтобы войти, как если пользователь нажал их на клавиатуре. Это было сделано Reallvnc или Ultravnc, я не помню. Однако этот подход не работает в Windows Vista.
-121--3732591-Если вы действительно должны использовать только стандартные библиотеки, то вам просто нужно немного расширить на решение Omar. (Ioutils Apache в основном просто набор методов удобных, которые сохраняются на большом количестве кодирования)
Вы уже можете получить входной поток через CLOBOBJECT.GETASCIISTREAM ()
Вы просто должны «вручную передавать «Символы для StringWriter:
InputStream in = clobObject.getAsciiStream();
Reader read = new InputStreamReader(in);
StringWriter write = new StringWriter();
int c = -1;
while ((c = read.read()) != -1)
{
write.write(c);
}
write.flush();
String s = write.toString();
имейте в виду, что
getElityStartId
возвращает узел элемента, который по существу является просто объектом JavaScript. Этот объект можно назначить переменной, что означает, что переменная будет указывать на этот объект при каждом вводе этой переменной на более позднем этапе. Таким образом,
var id1 = document.getElementById('id1');
id1
теперь относится к элементу DOM с id
, равным id1
. Если элемент с этим идентификатором
не найден, то document.getEliveStartId
возвращает значение null.
Если элементы остаются в DOM и не заменяются, то их имеет смысл хранить в массиве, чтобы можно было ссылаться на них сколько угодно раз без каких-либо затрат на производительность.
Если это поможет, вы можете создать простую функцию для этого:
function getElementsByIds( /* id1, id2 ... */ ) {
var elems = [];
for (var i = 0, l = arguments.length; i < l; i++) {
elems[i] = document.getElementById(arguments[i]);
}
return elems;
}
app.elements = getElementsByIds('id1', 'id2', 'id3');
-121--2827377- Нет. Отсутствует связь между Приложением Silverlight и браузером, в котором оно работало при установке. После запуска в качестве Приложения Silverlight использует собственный стек ClureHTTP и больше не зависит от стека HTTP браузера.
Предполагая, что нестабильность является результатом расширений Firefox, может помочь запуск приложения в OOB. Имейте в виду, что HTTP-стек браузера, скорее всего, будет более эффективным, и вы освободите автоматическую обработку файлов cookie.
-121--3404144-Хорошо Я предположу общее использование, сначала вы должны скачать apache commons , там вы найдете класс утилит с именем IOutils, который имеет метод с именем copy ();
Теперь решение: получить входной поток объекта CLOB с помощью getAsciiStream () и передать его методу copy ().
InputStream in = clobObject.getAsciiStream();
StringWriter w = new StringWriter();
IOUtils.copy(in, w);
String clobAsString = w.toString();