2010-12-06 20 views
0

Je rencontre des problèmes pour entrer des données dans plusieurs colonnes d'une base de données, tous les types de nvarchar. J'obtiens:exception avec nvarchar - les données ont été tronquées lors de la conversion d'un type de données en un autre

Les données ont été tronquées lors de la conversion d'un type de données à un autre. Nom de la fonction (si elle est connue)

DBConn.Open(); 

cmd = new SqlCeCommand("INSERT INTO [Employee Table] VALUES ('"+ social + "','" + 
     first + "','" + last + "','" + mid + "','" + address + "','" + phone + "'," 
      + "'Employee'" + ",'" + city + "','" + state + "','" + zip + "','" + email + "','" + userName + "')", DBConn); 
cmd.ExecuteNonQuery(); 

Toutes les suggestions sur la façon d'éviter l'erreur tronquer/conversion?

+1

Vous devez utiliser des paramètres. – SLaks

+2

Ne faites pas cela. Utilisez des requêtes paramétrées. S'il vous plaît. Tout le reste ne demande que l'injection SQL. – Heinzi

+1

Si vous faites une présentation de classe, l'injection SQL est beaucoup plus importante. _Please_ ne formez pas une autre génération de développeurs pour concaténer SQL. – SLaks

Répondre

4

essayer d'utiliser les paramètres

SqlParameter param = new SqlParameter("Field", SqlDbType.NVarChar)  
Param.Value = Field; 
6

Votre NVARCHAR n'est pas assez grand pour contenir votre chaîne.

2

La raison en est que la longueur de la colonne est très courte. La valeur est donc plus longue que la largeur maximale de la colonne de la table.