Escape SQL ''

Их довольно хитрое решение для этого и утечки фрагмента из активности.

Таким образом, в случае getResource или чего-либо другого, зависящего от доступа к контексту активности из фрагмента, всегда проверяется статус активности и статус фрагментов следующим образом

 Activity activity = getActivity(); 
    if(activity != null && isAdded())

         getResources().getString(R.string.no_internet_error_msg);
//Or any other depends on activity context to be live like dailog


        }
    }
5
задан skaffman 30 June 2009 в 07:06
поделиться

7 ответов

Существует несколько способов экранирования символьных данных в SQL Server, некоторые даже рекомендуют использовать функции QUOTENAME () .

Если вы действительно хотите Чтобы развить твердое понимание этой предметной области, могу я порекомендовать вам взглянуть на то, что опытные разработчики SQL Server считают важным чтением в отношении различных методов, которые вы можете использовать для включения динамического T-SQL в ваше кодирование.

Проклятие и благословение динамического SQL

3
ответ дан 14 December 2019 в 08:58
поделиться

Это работает на моем компьютере из SQL Server Management Studio :

@query varchar(max)

SET @query = 'SELECT * FROM Table WHERE [Name] = ''''''Karl'''''''

EXEC(@query)
2
ответ дан 14 December 2019 в 08:58
поделиться

Попробуйте:

DECLARE @query varchar(max)

SET @query = 'SELECT * FROM Table WHERE [Name] = ''Karl'''

PRINT 'when in doubt, print the query out: '+ISNULL(@query,'')
EXEC(@query)

Чтобы появилась одинарная кавычка, вам нужно имеют две смежные одинарные кавычки. Вы экранируете одинарную кавычку одной кавычкой, например:

PRINT ''''     --will print a one single quote
PRINT ''''''   --will print two single quotes
PRINT 'can''t' --will print can't
2
ответ дан 14 December 2019 в 08:58
поделиться

Двойная одинарная ('') кавычка будет действовать как одинарная одинарная кавычка внутри строкового литерала.

Вы пробовали использовать переменную?

declare @karl_name varchar(10);
set @karl_name = '''Karl''';

SELECT * FROM Table WHERE [Name] = @karl_name
1
ответ дан 14 December 2019 в 08:58
поделиться

сделать это нравится SET @query = 'SELECT * FROM Table WHERE [Name] =' '' 'Karl' '' ''

0
ответ дан 14 December 2019 в 08:58
поделиться

Это работает:

create table #demo([Name] varchar(max))
insert into #demo([Name]) values('''Karl''')
insert into #demo([Name]) values('Karl')
declare @query varchar(max)
set @query = 'SELECT * FROM #demo WHERE [Name] = ''''''Karl'''''''
EXEC(@query)

Вывод:

'Karl'

Но если «Карл» - это переменный текст, настоятельно рекомендуется вместо этого использовать что-то вроде этого:

declare @query nvarchar(max)
declare @param varchar(max)
set @param = N'''Karl'''
set @query = N'SELECT * FROM #demo WHERE [Name] = @param'
exec sp_executesql @query, N'@param varchar(max)', @param
0
ответ дан 14 December 2019 в 08:58
поделиться

Просто экранируйте апострофы, используя экранирующую полосу \, например, 'SELECT * FROM Table WHERE [Name] =' \ 'Karl \' ''

Надеюсь, это поможет

-1
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: