Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Или более быстрый:
IF OBJECT_ID('temp_ARCHIVE_RECORD_COUNTS') IS NOT NULL
DROP TABLE temp_ARCHIVE_RECORD_COUNTS
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))
DROP TABLE TableName;
GO
можно проверить список определений типа в sys.objects таблице здесь , если Вы хотите проверить, существуют ли другие объекты в Вашей базе данных.
Никто еще не упомянул этот метод:
if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME='MyTable')
begin
drop table MyTable
end
Это - самый портативный метод - он продолжает работать, по крайней мере, MSSQL2000 до MSSQL2008.
таблицы INFORMATION_SCHEMA являются частью стандарта SQL-92.
Одна вещь помнить, когда Вы отбрасываете и возражаете и затем добавляете назад к базе данных, также добавляют любые полномочия назад к таблице. Это сбило нас с толку неоднократно.
я проголосовал за ответ TracyNixon. Я сказал бы, что Вы хотите избегать запросов sysobjects таблицы непосредственно, потому что обновление Microsoft могло взломать такой код. Вы изолируете себя от этого при помощи функции OBJECT_ID.
Уверенный:
IF OBJECT_ID('YOURTABLENAME') IS NOT NULL
, где YOURTABLENAME
то, что название Вашей таблицы.
, Если это - временная таблица, затем просто, добавьте tempdb.#
прежде чем прежде OBJECT_ID
вызов функции.
Следующие работы, просто замените ИМЯ ТАБЛИЦЫ своей таблицей
IF EXISTS( SELECT * FROM dbo.sysobjects where id = object_id(N'TABLENAME') AND OBJECTPROPERTY(id, N'IsTable') = 1)
BEGIN
DROP TABLE TABLENAME
END