Base de données insérer l'erreur: “la ficelle ou des données binaires seront tronquées”
Lorsque je me connecte, je suis ranger mon nom d'utilisateur dans la session. Mon exigence est que je veux garder mon nom d'utilisateur dans ma base de données. Ici, je suis ranger dans username1
. Quand le nom d'utilisateur est entré, je peux l'imprimer à l'aide de response.write()
et c'est l'impression de parfaitement. Cependant, quand je suis à la stocker dans la base de données qu'il produit cette erreur:
**sqlException a été gérée par le code de l'utilisateur et l'exception au cmd.ExecuteScalar(); String ou des données binaires d'être tronquée. L'instruction a été arrêtée.**
Qui suit est mon ado.net code:
using (SqlConnection con =
new SqlConnection("Data Source=.;database=testdb1;Integrated Security=SSPI")) {
con.Open();
// SqlCommand cmd = new SqlCommand("delete from fileinfo where ID=" + Convert.ToInt32(Request.Params["one"]), con);
string uname = (string) Session["fname"].ToString() + " " + Session["lname"].ToString(); //Session["fname"].ToString()+" "+Session["lname"].ToString();
//Response.Write(uname);
//uname = "sri hari";
uname = uname + " ";
string uname1 = uname;
uname = uname.Trim();
SqlCommand cmd = new SqlCommand("insert into qry_details values('" + txt_query_name.Text + "','pending for approval','" + txt_query_description.Text + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + qry + "','" + uname1 + "')", con);
cmd.ExecuteScalar();
}
Quel est le type de données de la colonne dans laquelle vous voulez insérer le nom d'utilisateur? La valeur stockée dans
vous devez vérifier vos schémas de table, les types de données et de requêtes comme
Suis-je la seule personne qui tente d'analyser l'injection de risque?
uname
est plus longue que la longueur de cette colonne.vous devez vérifier vos schémas de table, les types de données et de requêtes comme
INSERT INTO table_name (column1,column2,column3,...) VALUES (@value1,@value2,@value3,...);
vous pouvez être confrontés à la colonne d'incompatibilitéSuis-je la seule personne qui tente d'analyser l'injection de risque?
OriginalL'auteur srihari | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
vérifier la longueur de qry_details table et voir si sa plus petite que la chaîne que vous envoyez à la db?
fondamentalement l'exception dit que vous êtes en essayant de quelque chose de plus grand que la longueur de la colonne.
j'ai donné la commande uname valeur 50 longueur
alors, quelle est la valeur de
uname.Length
?OriginalL'auteur Aneef
Je voudrais vous recommander à l'aide d'une requête paramétrée. Votre code est maintenant vulnérable à une injection SQL. Aussi, vous devez utiliser le
ExecuteNonQuery
méthode sur la commande SQL au lieu deExecuteScalar
lors de l'insertion de valeurs dans la base de données:chaîne de commande uname 1= (string)Session["fname"].ToString() + "" + Session["lname"].ToString();
Mais que dire de la "chaîne de caractères ou des données binaires seront tronquées" erreur?
ensuite, la même exception est à venir.exception est une Chaîne ou des données binaires d'être tronquée. La déclaration a été résilié.
c'est donner à cmd.ExecuteNonQuery();
OriginalL'auteur Darin Dimitrov
Cette erreur, la plupart du temps lors de l'insertion de la valeur est plus grande que la largeur du champ défini dans la table de SQL Server.
Vérifier si vous êtes l'insertion de la date et de l'heure à l'aide de DateTime.Maintenant c# fuction, votre Table doit être de type DateTime. pas de Date ou d'Heure seulement.
OriginalL'auteur Akhtar ali