Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Ответ Wiki, находящийся в собственности сообщества - не стесняется редактировать или добавлять комментарии:
Горячие клавиши
выполнения запросов, Редактируя Ярлыки
Дополнения
Другие Подсказки
Полезные ссылки
Смотрите на Подсказка SQL Красного Логического элемента - это - большой продукт (как большинство вкладов Красного Логического элемента)
, SQL Сообщает , также большой свободный инструмент (онлайн) для форматирования длинных процедур, которые могут иногда выходить из-под контроля.
Кроме этого, я учился на болезненном опыте, это - хорошая вещь к , предшествуют любому DELETE
оператор с BEGIN TRANSACTION
. Как только Вы уверены, что Ваш оператор удаляет только, что он должен, Вы можете тогда COMMIT
.
Сохраненный меня в ряде случаев;-)
Используйте функциональность ПОПЫТКИ/ВЫГОДЫ для с обнаружением ошибки.
Опытное Программирование SQL Server Adam Machanic 2005 года является большим ресурсом для твердых методов и методов.
цепочка принадлежности Использования для сохраненного procs.
Используют схемы для осуществления безопасности данных и ролей.
Отобразитесь Разработчик Запроса с CTRL + SHIFT + Q
Я предлагаю, чтобы Вы создали стандарты для своих сценариев SQL и придерживались их. Также используйте шаблоны для быстрого создания различных типов хранимых процедур и функций. Вот вопрос о шаблонах в управлении Studio
Другой вещью, которая помогает улучшить точность того, что я делаю, не является действительно студийная подсказка по управлению, но одно использование t-sql само.
Каждый раз, когда я пишу обновление или оператор удаления впервые, я включаю выбор в него так, чтобы я видел, какие записи будут затронуты.
Примеры:
select t1.field1,t2.field2
--update t
--set field1 = t2.field2
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10
select t1.*
--delete t1
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 = 'test'
(отмечают, что я использовал выбор * здесь только для иллюстрации, я буду обычно только выбирать несколько полей, я должен видеть, что запрос корректен. Иногда я, возможно, должен был бы видеть поля от других таблиц inthe соединение, а также записи, которые я планирую удалить, чтобы удостовериться, что соединение проложило себе путь, я думал, что это будет)
при выполнении этого кода Вы выполняете выбор сначала, чтобы гарантировать, что это корректно, затем прокомментируйте, что выбор намечает и не комментирует удаление или обновляет части. Путем выполнения его этот путь Вы случайно не выполняете удаление или обновление перед проверкой его. Также Вы избегаете проблемы упущения прокомментировать выбор, заставляющий обновление обновить все записи в таблице базы данных, которая может произойти, если Вы используете этот синтаксис и не комментируете выбор для выполнения его:
select t1.field1,t2.field2
update t
set field1 = t2.field2
--select t1.field1,t2.field2
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10
, Как Вы видите от примера выше, если Вы не комментируете выбор и забываете повторно комментировать его, ой Вы просто обновили целую таблицу и затем выполнили выбор, когда Вы думали, чтобы просто выполнить обновление. Кто-то просто сделал это в моем офисе на этой неделе, делая его так только одним человеком всех, что клиенты могли войти в клиентские веб-сайты. Поэтому постарайтесь не делать это.
обозреватель объектов> щелкает правой кнопкой по таблице> таблица Script как> ВЫБОР к> Буфер обмена
Тогда, можно просто вставить в разделе, где Вы хотите это как запрос sub.
Создают Вас собственные шаблоны только с фрагментом кода. Тогда вместо этого открытие шаблона как новый документ просто перетаскивает его Вам текущий запрос для вставки отрывка.
отрывок А может просто быть рядом заголовка с комментариями или просто некоторой простой частью кода.
, Если Вы привычка не забываете запускать транзакцию перед Вашим удалять statemens, можно перейти к опциям и установить неявные транзакции по умолчанию во всех запросах. Они всегда требуют явной фиксации / откат.
Переходит к опциям и установил уровень изоляции на READ_UNCOMMITED по умолчанию. Таким образом, Вы не должны вводить NOLOCK во всех своих специальных запросах. Просто не забывайте помещать подсказку таблицы при записи нового представления или хранимой процедуры.
Вашему входу в систему установил базу данных по умолчанию DBA (Мне, обычно нежелательный почти каждый раз).
, Если Вы хотите, чтобы он был различным из-за проекта, Вы в настоящее время продолжаете работать.
В 'Зарегистрированной области Servers'> Щелчок правой кнопкой> вкладка свойств Properties> Connection> соединяются с базой данных.
(Они Вы, возможно, уже сделали хотя)
Регистр сервер многократно, каждый с различным входом в систему. У Вас может тогда быть тот же сервер в обозревателе объектов, открытом многократно (каждый с различным входом в систему).
Для выполнения того же запроса Вы уже записали с различным входом в систему, вместо того, чтобы копировать запрос просто делают щелчок правой кнопкой по области запроса> Соединение> соединение Изменения.
Сочетания клавиш. Как только Вы выясняете, какие виды запросов Вы пишете много, запишите служебные хранимые процедуры, чтобы автоматизировать задачи и отобразить их на сочетания клавиш. Например, эта статья говорит о том, как постараться не вводить "избранные лучшие 10 * от SomeBigTable", каждый раз Вы хотите просто получить беглый взгляд на демонстрационные данные из той таблицы. У меня есть значительно расширенная версия этой процедуры, отображенной на CTRL + 5 .
еще много я имею:
... и еще много, которые не приходят на ум прямо сейчас. Некоторые из этих вещей могут быть сделаны через существующие интерфейсы в SSMS, но окна и виджеты SSMS могут быть, немного замедляют загрузку, особенно когда Вы запрашиваете против сервера через Интернет, и я предпочитаю не иметь необходимость взять руки от клавиатуры так или иначе.
Мне нравится устанавливать сочетание клавиш CTRL + F1 как sp_helptext, поскольку это позволяет Вам выделять хранимую процедуру, и быстро смотреть на он - код. Я нахожу, что это - хорошее дополнение к значению по умолчанию ALT + ярлык F1 sp_help .
Попытайтесь использовать всегда самый маленький тип данных, что Вы можете и индексировать все поля, наиболее используемые в запросах.
Стараются избегать серверных курсоров как можно больше. Всегда придерживайтесь 'основанного на наборе подхода' вместо 'процедурного подхода' для доступа и управления данными. Курсоров можно часто избегать при помощи операторов SELECT вместо этого.
Всегда используют графический план выполнения в Query Analyzer или SHOWPLAN_TEXT или командах SHOWPLAN_ALL для анализа запросов. Удостоверьтесь, что Ваши запросы делают "Индекс ищет" вместо "Индексного сканирования" или "Сканирования таблицы". Сканирование таблицы или индексное сканирование являются очень плохой вещью и должны избежаться, если это возможно. Выберите правильные индексы на правых столбцах. Используйте более читаемые Стандартные ANSI пункты Соединения вместо старых соединений стиля. С соединениями ANSI оператор Where используется только для фильтрации данных. Где как с более старыми соединениями стиля, оператор Where обрабатывает и условие объединения и данные фильтрации.
не позволяют Вашим приложениям фронтенда запрашивать/управлять данные непосредственно с помощью ВЫБОРА или ВСТАВЛЯТЬ/ОБНОВЛЯТЬ/ОПЕРАТОРЫ УДАЛЕНИЯ. Вместо этого создайте хранимые процедуры и позвольте своим приложениям получить доступ к этим хранимым процедурам. Это содержит доступ к данным в чистоте и последовательный через все модули Вашего приложения, и в то же время централизуя бизнес-логику в базе данных.
Разговор о Хранимых процедурах, не снабжайте префиксом свои названия хранимой процедуры "SP _". Префикс sp_ резервируется для системной хранимой процедуры та поставка с SQL Server. Каждый раз, когда SQL Server встречается с именем процедуры, запускающимся с SP _, это сначала пытается определить местоположение процедуры в основной базе данных, тогда это ищет любые спецификаторы (база данных, владелец), если, тогда это пробует dbo как владельца. Таким образом, можно действительно сэкономить время в определении местоположения хранимой процедуры путем предотвращения "SP _" префикс.
Избегают динамических SQL-операторов как можно больше. Динамический SQL имеет тенденцию быть медленнее, чем статический SQL, поскольку SQL Server должен генерировать план выполнения каждый раз во времени выполнения.
, Когда будет возможно, попытайтесь использовать интегрированную аутентификацию. Это означает, забудьте о sa и пользователях SQL других, используйте пользователя Microsoft, настраивающего инфраструктуру, и всегда сохраняйте свой SQL-сервер, актуальный со всеми требуемыми исправлениями. Microsoft делает хорошую разработку задания, тестирование и выпуск патчей, но это - Ваше задание для применения его.
Поиск в книгах amazon.com с хорошими обзорами об этом и покупают его!
Выделение объекта в запросе и нажатии ALT + F1 выполнит sp_help для него, давая Вам поломку любых столбцов, индексов, параметры и т.д.
Моя любимая быстрая подсказка - то, что, когда Вы расширяетесь, имя таблицы в обозревателе объектов, просто перетащив слово colums на экран запроса поместит список всех столбцов в таблице в запрос. Намного легче просто удалить тех Вы не хотите, чем ввести тех, Вы действительно хотите, и это настолько легко, это препятствует тому, чтобы люди использовали действительно ужасный выбор * синтаксис. И это предотвращает опечатки. Конечно, можно индивидуально перетащить столбцы также.
+1 для Подсказки SQL.
Что-то реальное, простое, что я предполагаю, что никогда не видел - который будет работать с примерно ЛЮБОЙ средой SQL (и другие языки даже):
После 12 лет кодирования SQL, я недавно стал преобразованием в стиль префикса запятой после наблюдения его в некотором SSMS сгенерированный код, я нашел его очень эффективным. Я был очень удивлен, что никогда не видел этот стиль прежде, тем более, что он повысил мою производительность очень.
SELECT
t.a
,t.b
,t.c
,t.d
FROM t
Это делает действительно легким отредактировать списки выборки, списки параметров, порядок списками, группу списками, и т.д. Я нахожу, что провожу намного меньше времени, играя с добавлением и удалением запятых от конца списков после операций вырезания и вклейки - я предполагаю, что это удается легче, потому что Вы почти всегда добавляете вещи в конце, и с постфиксными запятыми, который требует, чтобы Вы переместили курсор больше.
Попытка это, Вы будете удивлены - я знаю, что был.
Просто крошечный - прямоугольные выделения ALT + DRAG
очень удобны для копирования + вставки вертикально выровненных списков столбцов (например, при ручной записи массовое ОБНОВЛЕНИЕ). Написание TSQL - единственный раз, когда я его использую!
У меня есть запланированная задача, которая каждую ночь записывает каждый объект (таблицу, sproc и т. Д.) В файл. У меня в выходном каталоге установлена индексация полнотекстового поиска, поэтому, когда я ищу определенную строку (например, константу), которая находится где-то в БД, я могу очень быстро ее найти.
В Management Studio вы можете использовать команду «Задачи»> «Создать сценарии ...», чтобы узнать, как это сделать.
CTRL + I для инкрементного поиска . Нажмите F3 или CTRL + I , чтобы просмотреть результаты.
Я тепло рекомендую Подсказку SQL Красного Логического элемента. Автоматическое обнаружение (intellisense на таблицах, хранимых процедурах, функциях и собственных функциях) является не чем иным как потрясающий!:)
Это идет с ценой все же. Нет никакой бесплатной версии вещи.
F5 для выполнения текущего запроса является легкой победой, после этого, универсальный редактор Миссисипи команды CTRL + K + C , чтобы прокомментировать выделенный текст и затем CTRL + K + U , чтобы не прокомментировать.
Используйте подробности обозревателя объектов вместо обозревателя объектов для просмотра таблиц, таким образом вы можете нажать букву, и она перейдет к первой таблице с этим буквенным префиксом.
Если вы работаете с разработчиками, часто получаете кусок кода, отформатированный как одну длинную строку кода, тогда надстройка принтера sql pretty для SQL Server Management Studio может значительно помочь с большим количеством более 60 вариантов форматирования. http://www.dpriver.com/sqlpp/ssmsaddin.html
Use a SELECT INTO
query to quickly/easily make backup tables to work and experiment with.
Зная о двух (?) Разных типах окон, доступных в SQL Server Management Studio.
Если вы щелкните правой кнопкой мыши таблицу и выберите Открыть
, она откроется. используйте редактируемую сетку, в которой вы можете изменять ячейки. Если вы щелкните правой кнопкой мыши базу данных и выберите Новый запрос
, он создаст окно немного другого типа, в котором вы не можете изменить сетку, но оно дает у вас есть несколько других приятных функций, таких как разрешение различных фрагментов кода и возможность выполнять их по отдельности путем выбора.
Использование TAB для выделенного текста приведет к его отступу. Удобно для легкого преобразования вашего кода в читаемый формат. Кроме того, SHIFT + TAB будет отменен.