2011-09-25 16 views
6

Mam kwerendę wstawiania do wykonania z poziomu C# przeciwko bazy danych programu SQL Server.Zapytanie SQL w formacie Unicode W/Parametr zamiast N Prefiks

Kolumna, do której wstawiam, jest typu nvarchar.

Dane, które wstawiam do tej kolumny, nie są angielskie.

Czy wystarczy użyć AddWithValue, aby przekazać dane inne niż angielskie na serwer? podobny do tego przykładu:

string dogName = "עברית"; 
using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 
    using (SqlCommand command = new SqlCommand("INSERT INTO Dogs1(Name) VALUES @Name", connection)) 
    { 
    command.Parameters.AddWithValue("Name", dogName); 
    command.ExecuteNonQuery(); 
    } 
} 

Czy muszę użyć prefiksu N, aby zadeklarować kod Unicode? tak jak mówi tak here.

Odpowiedz

3

Jeśli dobrze rozumiem pytanie, można jawnie ustawić parametr SqlCommand na określony typ danych. Będziesz mógł ustawić ją jako nvarchar jak wynika z poniższego linku: http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx

To poniżej fragment kodu jest pobierana bezpośrednio z MSDN:

SqlParameter parameter = new SqlParameter(); 
parameter.ParameterName = "@CategoryName"; 
parameter.SqlDbType = SqlDbType.NVarChar; 
parameter.Direction = ParameterDirection.Input; 
parameter.Value = categoryName; 

ta wykorzystuje wyraźnie utworzony instancję SqlParameter, ale jest ten sam pomysł, indeksując SqlParameterCollection instancji SqlCommand.

+0

Dobrze o tym wiedzieć, ale czy muszę zadawać sobie te wszystkie problemy z każdym parametrem? Cała ta dodatkowa praca obniża czytelność kodu i naprawdę chciałbym go pominąć, jeśli mogę. – kroiz

4

Wierzę, że link na dole mówi tylko o wartościach w obrębie samego SQL.

O ile mi wiadomo, kod, który otrzymasz, powinien być absolutnie poprawny - w przeciwnym razie nie byłoby sposobu na podanie tekstu w kodzie Unicode.

Oczywiście, warto to potwierdzić - ale byłbym bardzo zaskoczony, gdyby to nie zadziałało.

+0

Proszę zobaczyć moją odpowiedź. Zgadzam się, że to prawdopodobnie zadziała, ponieważ 'string' będzie domyślnie nvarchar, ale jest sposób na jawne wywołanie tego, co jest typem danych. –