Симон Моурир дал этот пример :
object o = null;
DateTime d = (DateTime)o; // NullReferenceException
, где unboxing преобразование (литье) из object
(или из одного из классов System.ValueType
или System.Enum
или из типа интерфейса) - тип значения (кроме Nullable<>
) сам по себе дает NullReferenceException
.
В другом направлении конверсия бокса из a Nullable<>
, которая имеет HasValue
, равную false
, на ссылочный тип, может дать ссылку null
, которая затем может привести к NullReferenceException
. Классический пример:
DateTime? d = null;
var s = d.ToString(); // OK, no exception (no boxing), returns ""
var t = d.GetType(); // Bang! d is boxed, NullReferenceException
Иногда бокс происходит по-другому. Например, с помощью этого не общего метода расширения:
public static void MyExtension(this object x)
{
x.ToString();
}
следующий код будет проблематичным:
DateTime? d = null;
d.MyExtension(); // Leads to boxing, NullReferenceException occurs inside the body of the called method, not here.
Эти случаи возникают из-за специальных правил, используемых во время выполнения при боксе Nullable<>
экземпляров.
В SQL способ сделать это состоит в том, чтобы удвоить апостроф:
'he doesn''t work for me'
Если вы делаете это программно, вы должны использовать API, который принимает параметры и избегает их для вас, например, подготовленный операторы или аналогичные, а скорее избегают и используют конкатенацию строк для сборки запроса.
INSERT INTO exampleTbl VALUES('he doesn''t work for me')
Если вы добавляете запись через ASP.NET, вы можете использовать объект SqlParameter для передачи значений, поэтому вам не нужно беспокоиться о том, что пользователи вступают в него.
попробуйте это
INSERT INTO exampleTbl VALUES('he doesn''t work for me')
вы можете использовать обратную косую черту '\', если вы хотите отобразить одну цитату в своем тексте.
INSERT INTO exampleTbl VALUES ('He doesn (\') t ');
$value = "he doesn't work for me";
$new_value = str_replace("'", "''", "$value"); // it looks like " ' " , " ' ' "
INSERT INTO exampleTbl (`column`) VALUES('$new_value')
да, сервер sql не позволяет вставлять одиночную кавычку в поле таблицы из-за атаки на SQL-инъекцию. поэтому при сохранении мы должны заменить единый appostrophe на double.
(он не работает для меня) должен быть => (он не работает для меня)
insert into table1 values("sunil''s book",123,99382932938);
использовать двойной апостроф внутри одного апострофа, он будет работать