使用 SQL Server 执行非查询时出现 Ñ 错误

问题描述 投票:0回答:1

您好,首先感谢您的阅读。 我在 .txt 文件中有一个要通过“ExecuteNonQuery”执行的查询来验证表是否存在等。

当我尝试从 .txt 文件中收集“ñ”字符并在 ExecuteNonQuery 中执行该字符(如果我将查询放入 SQL Server Management Studio 中,它就可以工作)时,问题就出现了。 我必须使用这个字符,因为它包含在列名称“año”中,在英语中意思是“年”。

PD:我尝试输入“ñ”并且它有效,ExecuteNonQuery 没有给我任何错误,但 SqlServer 无法识别它。

最后,我在 .txt 文件中留下了一个 SQL 查询的小示例:

CREATE TABLE[dbo].[autos]( 
id_auto int IDENTITY(1, 1) not null PRIMARY KEY, 
patente varchar(7) not null, 
marca varchar(12) not null, 
modelo varchar(12) not null, 
año int not null, 
comentarios_auto varchar(200),
fecha_registro date DEFAULT GetDate() not null) 

C#代码:

 int counter = 0;
        string linea;
        string contenedor_texto;
        contenedor_texto = "";
        StreamReader file = new StreamReader("c:/Users/Natario/Desktop/test.txt");
        while ((linea = file.ReadLine()) != null)
        {
            contenedor_texto = contenedor_texto + linea;
            counter++;
        }
        string comando_consulta = contenedor_texto;
        comandoSQLbeta(comando_consulta,datosConexion);

PD2:comandoSQLbeta,仅执行包含'comando_consulta'的SQLQuery。 PD3:参数'datosConexion'是一个包含connectionString的字符串

c# sql-server visual-studio
1个回答
1
投票

使用方括号对包含拉丁语以外字母表中的字符的名称进行转义:

CREATE TABLE[dbo].[autos]( 
id_auto int IDENTITY(1, 1) not null PRIMARY KEY, 
patente varchar(7) not null, 
marca varchar(12) not null, 
modelo varchar(12) not null, 
[año] int not null, -- <<== Here
comentarios_auto varchar(200),
fecha_registro date DEFAULT GetDate() not null) 
© www.soinside.com 2019 - 2024. All rights reserved.