Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Экранирование специальный символов  [new]
Mr. Abdu Jan
Member

Откуда:
Сообщений: 55
Привет всем...
Как можно экранировать символ ' в server 2005?

sqlString = "INSERT INTO tbl(title) VALUES('" & val & "');"
4 май 12, 18:25    [12510233]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
''
4 май 12, 18:27    [12510250]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
Mr. Abdu Jan
Member

Откуда:
Сообщений: 55
Гавриленко Сергей Алексеевич,

у меня запрос внутри цикла, и переменная val берет разные данные... и в некоторых данных есть символ '...
4 май 12, 19:06    [12510436]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Mr. Abdu Jan
Гавриленко Сергей Алексеевич,

у меня запрос внутри цикла, и переменная val берет разные данные... и в некоторых данных есть символ '...
Используйте параметры.
4 май 12, 19:08    [12510446]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
Mr. Abdu Jan
Member

Откуда:
Сообщений: 55
Гавриленко Сергей Алексеевич,

типа так:

INSERT INTO tbl(title1, title2) VALUES('Operator's Password','Some text');
4 май 12, 19:13    [12510466]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
Deza
Member

Откуда:
Сообщений: 814
Mr. Abdu Jan,

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx
4 май 12, 19:22    [12510491]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
komrad
Member

Откуда:
Сообщений: 5760
Mr. Abdu Jan
Гавриленко Сергей Алексеевич,

у меня запрос внутри цикла, и переменная val берет разные данные... и в некоторых данных есть символ '...


declare @val1 varchar(20)
declare @val2 varchar(20)
select @val1='asda''sd'
select @val2='asda5sd'
select @val1 [original value],
		replace(@val1,char(39),char(39)+char(39)) [prepared for insert],
		'select '''+replace(@val1,char(39),char(39)+char(39))+'''' [select prepared]
select @val2 [original value],
		replace(@val2,char(39),char(39)+char(39)) [prepared for insert],
		'select '''+replace(@val2,char(39),char(39)+char(39))+'''' [select prepared]
4 май 12, 19:25    [12510497]     Ответить | Цитировать Сообщить модератору
 Re: Экранирование специальный символов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Гавриленко Сергей Алексеевич
Mr. Abdu Jan
Как можно экранировать символ ' ...
Используйте параметры.
Бесполезно вдалбливать это.
Если у чела не стоит цели понимать, то и миллион слов не поможет, и наглядный пример.

Dim cmdText As String = "INSERT INTO Customer(UserName, [Password]) VALUES (?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(cmdText, con)
cmd.CommandType = CommandType.Text ‘ The default is CommandType.Text
With cmd.Parameters
  .Add("@p1", OleDbType.VarChar).Value = UserName
  .Add("@p2", OleDbType.VarChar).Value = Password
End With
cmd.ExecuteNonQuery()
SqlCommand cmd = new SqlCommand("INSERT INTO tbl(title1, title2) VALUES(@val1,@val2);", MyConnection);
cmd.Parameters.Add(new SqlParameters("@val1", SqlDbType.VarChar,200)).Value = val1;
cmd.Parameters.Add(new SqlParameters("@val2", val2));
MyConnection.Open()
cmd.ExecuteNonQuery();
А экранировать спец символы в строковых константах надо так, как это описано в спецификации используемого языка.

А для ленивых (не по теме, но на заметку): QuoteName
SELECT QuoteName(@Param,'''')
Двоечники.
5 май 12, 00:54    [12511229]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить