Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment résoudre l'erreur de longueur maximale (c'est trop long) dans la requête sql c#

L'erreur indique que l'identifiant le nom est trop long ; ceci combiné avec l'erreur de guillemet non fermé signifie que vous avez probablement manqué une citation d'ouverture. Autrement dit, vous avez ceci :

INSERT INTO Foo ( A ) VALUES ( AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')

au lieu de

INSERT INTO Foo ( A ) VALUES ( 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')

Vous ne devriez pas créer vos requêtes via la concaténation de chaînes ; c'est une des raisons. Les requêtes paramétrées obtiendront le devis qui vous convient. (Remarque :vous n'avez pas besoin d'utiliser des procédures stockées pour utiliser des requêtes paramétrées.)

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.