Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена в нуль (т. е. она не ссылалась на экземпляр фактического объекта).
Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.
if (myvar != null)
{
// Go ahead and use myvar
myvar.property = ...
}
else
{
// Whoops! myvar is null and cannot be used without first
// assigning it to an instance reference
// Attempting to use myvar here will result in NullReferenceException
}
Если вы заинтересованы в переносимости между разными SQL-серверами, вы должны использовать SQL-запросы ANSI. К сожалению, этот метод экранирования не переносится в MySQL, если он не установлен в режиме совместимости с ANSI.
Лично я всегда запускаю свой MySQL-сервер с аргументом -sql-mode = 'ANSI', поскольку это позволяет использовать оба метода для экранирования. Если вы пишете запросы, которые будут выполняться на сервере MySQL, который не был настроен / контролируется вами, вот что вы может сделать:
SET @OLD_SQL_MODE=@@SQL_MODE;
SET SESSION SQL_MODE='ANSI';
-- ANSI SQL queries
SET SESSION SQL_MODE=@OLD_SQL_MODE;
Таким образом, единственные запросы, связанные с MySQL, находятся в начале и в конце вашего сценария .sql. Если вы отправляете их на другой сервер, просто удалите эти 3 запроса, и все будет готово. Еще удобнее было бы создать сценарий с именем: script_mysql.sql, который будет содержать вышеуказанные запросы к настройкам режима, введите сценарий script_ansi.sql и сбросьте режим.
Вы можете использовать двойные кавычки, если включен режим ANSI SQL
CREATE TABLE IF NOT EXISTS misc_info
(
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
"key" TEXT UNIQUE NOT NULL,
value TEXT NOT NULL
)
ENGINE=INNODB;
или пропущенное закрытие обратной связи. (Где найти символ `
на разных раскладках клавиатуры, рассматривается в этот ответ )
CREATE TABLE IF NOT EXISTS misc_info
(
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL
)
ENGINE=INNODB;
(Источник: Справочное руководство по MySQL, 9.3 Зарезервированные слова [ / д2])
Вы должны использовать символ обратного тика (`), например:
create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;