2012-08-03 7 views
5

W Ruby jest to możliwe do wykorzystania w struny bez konieczności ucieczki podwójny cudzysłów w ciągu znaków, jak Q/Niektóre mój ciąg z „cudzysłów”/Jak uniknąć ucieczki podwójnego cudzysłowu w ciągi C#?

Czy to możliwe z C#, aby korzystać ciąg bez konieczności uciec podwójnymi cytatami? Z dobrego powodu muszę napisać wbudowany SQL i bardzo uciążliwe jest unikanie podwójnego cudzysłowu za każdym razem, gdy umieszczam zapytanie SQL z konsoli DB do kodu C#.

wiem, że to możliwe, aby korzystać z \”lub«», jako jeden podwójny cudzysłów. Ale czy to możliwe, aby uniknąć konieczności ucieczki podwójnych cudzysłowów?

+0

Po prostu. Nie. Możesz użyć symbolu @, aby zatrzymać "to jest" + [nowa linia czystego kodu] "długi ciąg, którego nie chcesz w jednym wierszu"; ale nie da się uniknąć ucieczki. –

Odpowiedz

4

Nie, nie jest to możliwe w języku C#. Można napisać Twój SQL w oddzielnym pliku, a następnie odczytać go stamtąd

9

No, w zasadzie masz wybór "foo \" bar" lub @"foo "" bar", z których oba zostały wspomniano jednak, szczerze mówiąc rzadko znaleźć " niezbędne w SQL;... masz ' dla literalnych łańcuchów znaków i [/] dla nazw obiektów/kolumn - oczywiście może to być spowodowane tym, że zwykle używaj SQL Server.

Jedyną alternatywą, która polega na tym, że nie obejmuje, polega na przeniesieniu SQL do zewnętrznego pliku zasobów, może do pliku tekstowego. To jednak jest prawdopodobnie bardziej bolesne niż po prostu używanie "".

+1

Używam PostgreSQL, gdzie nazwy CamelCase powinny być znakowane podwójnymi cudzysłowami. – Zelid

+0

@Zelid tak, podejrzewałem, że możesz używać innego silnika bazy danych (rzadko widzę ten problem). Przykro mi, ale musisz wybrać, która opcja jest najmniej gorsza. –

0

Dla dobrego powodu muszę napisać inline SQL i jest to bardzo irytujące ewakuacyjnych cudzysłowach za każdym razem umieścić zapytanie SQL z konsoli DB do kodu C# .

Jeśli piszesz Zapytanie SQL Inline, nie musisz martwić się kwotowaniem, jeśli przekazałeś wartości przez SqlParameters. W ten sposób nie zobaczysz denerwujących podwójnych cytatów, gdziekolwiek, a nawet twoje zapytanie będzie bezpieczne od Sql Injection

+0

Używam Massive jako lekkiej biblioteki dostępu DB. Zawsze używa ucieczek parametrów. Kiedy używam nazw CamelCase, muszę używać podwójnych cudzysłowów w nazwach kolumn i tabel w PostgreSQL. – Zelid

+0

@Zelid w tym przypadku Zgadzam się, że będzie denerwujące, widząc podwójne cytaty w każdym miejscu i nie sądzę, że masz inną opcję – HatSoft