Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como resolver o erro de comprimento máximo (é muito longo) na consulta sql c #


O erro está dizendo que o identificador o nome é muito longo; isso combinado com o erro de aspas não fechadas significa que você provavelmente perdeu uma cotação de abertura. Ou seja, você tem isso:
INSERT INTO Foo ( A ) VALUES ( AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')

ao invés de
INSERT INTO Foo ( A ) VALUES ( 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')

Você não deve construir suas consultas por meio de concatenação de strings; este é um dos motivos. As consultas parametrizadas obterão a cotação certa para você. (Observação:você não precisa usar procs armazenados para usar consultas parametrizadas.)
var sql = "INSERT INTO My_RSS ( Title, Description, Date, Link, Rate, Name )
           VALUES ( @Title, @Desc, @PostDate, @Link, @Rate, @Name )";

SqlCommand cmd = new SqlCommand(sql, Connect());
cmd.Parameters.Add("@Title", SqlDbType.VarChar, 100).Value = RSS_title;
cmd.Parameters.Add("@Desc", SqlDbType.VarChar, 8192).Value = RSS_description;
cmd.Parameters.Add("@PostDate", SqlDbType.SmallDateTime).Value = DateTime.Now;
cmd.Parameters.Add("@Rate", SqlDbType.Int).Value = rate;

etc.