Entab / Detab в VIM

Oracle даст Вам ошибки об открытых курсорах в этом случае.

Согласно: http://java.sun.com/javase/6/docs/api/java/sql/Statement.html

похоже, что многократное использование оператора закроет любые открытые наборы результатов, и закрытие оператора закроет любые наборы результатов, но я не вижу, что что-либо о закрытии соединения закроет любой из ресурсов, которые это создало.

Все те детали оставляют поставщику драйвера JDBC.

Его всегда самый безопасный закрыть все явно. Мы записали util класс, который обертывает все с попыткой {xxx} выгода (Throwable {} так, чтобы можно было просто назвать Utils.close (RS) и Utils.close(stmt), и т.д. не имея необходимость волноваться по поводу исключений, что закрываются, сканирование, предположительно, бросают.

5
задан claws 19 November 2009 в 01:03
поделиться

4 ответа

Вы можете увидеть различные шаги проверки в действии, если запустите fuslogvw.exe (из .NET SDK) и включите ведение журнала всех привязок к диску. Вы сможете увидеть различные пути, которые .NET CLR использует для разрешения ссылок на сборки. Однако практическое правило - сначала попробовать глобальный кэш сборок, а затем проверить локальный каталог вместе с множеством других альтернативных путей.

6
ответ дан 18 December 2019 в 09:08
поделиться

Технически, в DLL нет пространств имен.

На уровне CLR, вообще нет пространств имен, только полные имена классов. Имя класса CLR может состоять из произвольно длинной последовательности любых символов Юникода - например, @ # $% было бы идеальным именем класса с точки зрения CLR.

Итак, по соглашению (в частности, CLS), имена классов ограничиваются определенными символами Unicode (буквенно-цифровыми и _ , а также множеством других экзотических категорий Unicode - см. спецификацию для получения дополнительной информации) и точкой , а точка используется для обозначения пространств имен. Это чисто соглашение между компиляторами (и другими инструментами).

Таким образом, всякий раз, когда сборка ссылается на какой-либо тип по какой-либо причине, она просто использует его полное имя CLR, например System.String . Но это еще не все - на самом деле он использует полностью определенное имя, которое также включает сборку. Вы можете увидеть их, если посмотрите на вывод ildasm - они выглядят примерно как [mscorlib] System.String , поэтому среда выполнения знает, где искать.

Другими словами, CLR действительно видит сборку mscorlib.dll, имеющую класс System.String , и сборку B.exe, ссылающуюся на этот класс как [mscorlib] System.String . Ваш оператор using сам по себе не генерирует никакого кода в выходной DLL / EXE; он там только для того, чтобы вам не приходилось постоянно писать System.String .

Задача компилятора - перевести ваш код, говорящий String , в рамках с использованием оператора System; в проекте, который ссылается на mscorlib.dll , на [mscorlib] System.String . Это' все делается во время компиляции. Единственное, что CLR делает во время выполнения, - это разрешает mscorlib , чтобы найти фактический mscorlib.dll на диске (и другой ответ объясняет, как именно это происходит).

5
ответ дан 18 December 2019 в 09:08
поделиться

Правила расположения сборки описаны в http://msdn.microsoft .com / en-us / library / yx7xezcf.aspx

4
ответ дан 18 December 2019 в 09:08
поделиться

Имена сборок и пространств имен не связаны между собой.

Скомпилированная сборка ссылается на другие сборки, содержащие их имя .

Когда сборка загружена, ее ссылки загружаются путем поиска имени, как описано здесь . Наиболее распространенное расположение сборок - это Глобальный кэш сборок машины и базовый каталог приложения.

После загрузки сборки и всех ее ссылок (и ссылок на ссылки и т. Д.) среда выполнения загружает требуемые типы из сборок.

Например, если вы используете тип String , как в

using System;

...
String x = "Hello World";

, компилятор C # ищет String и разрешает его в Тип System.String в сборке mscorlib ,

3
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: