2011-09-25 15 views
6

Tengo una consulta de inserción para ejecutar desde dentro de un C# contra una base de datos de SQL Server.Unicode SQL Query W/parámetro en su lugar N Prefijo

La columna en la que estoy insertando es del tipo nvarchar.

los datos que estoy insertando en esa columna no son en inglés.

¿Es suficiente para mí usar AddWithValue para pasar los datos no ingleses al servidor? como este ejemplo:

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(); 
    } 
} 

¿O debo usar el prefijo N para declararlo unicode? como dice tan here.

Respuesta

3

Si estoy entendiendo la pregunta correctamente, puede establecer explícitamente el parámetro SqlCommand para que sea un tipo de datos específico. Usted será capaz de establecer que sea nvarchar como se muestra en el siguiente enlace: http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx

Este continuación fragmento de código se toma directamente de MSDN:

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

Este utiliza una instancia SqlParameter creado explícitamente, pero es la misma idea al indexar la SqlParameterCollection de la instancia de SqlCommand.

+0

Eso es bueno saber, pero ¿debo entrar en este problema para cada parámetro? Todo este trabajo extra reduce la legibilidad del código y realmente me gustaría ir sin él si puedo. – kroiz

4

Creo que el enlace en la parte inferior solo habla de los valores dentro del propio SQL.

Por lo que sé, el código que tienes debe ser absolutamente correcto, de lo contrario no habría forma de especificar texto Unicode.

Por supuesto, es probable que valga la pena validar esto, pero me sorprendería mucho si no funcionara.

+0

por favor vea mi respuesta. Estoy de acuerdo en que probablemente funcione ya que 'cadena 'será implícitamente nvarchar, pero hay una manera de llamar explícitamente a lo que es el tipo de datos. –