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

Erreur sql de nom de colonne non valide

Vous avez probablement besoin de guillemets autour de ces champs de chaîne, mais vous devriez utiliser des requêtes paramétrées !

cmd.CommandText = "INSERT INTO Data ([Name],PhoneNo,Address) VALUES (@name, @phone, @address)";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@name", txtName.Text);
cmd.Parameters.AddWithValue("@phone", txtPhone.Text);
cmd.Parameters.AddWithValue("@address", txtAddress.Text);
cmd.Connection = connection;

Incidemment, votre requête d'origine aurait pu être corrigée comme ceci (notez les guillemets simples) :

"VALUES ('" + txtName.Text + "','" + txtPhone.Text + "','" + txtAddress.Text + "');";

mais cela l'aurait rendu vulnérable aux attaques par injection SQL puisqu'un utilisateur pourrait saisir

'; drop table users; -- 

dans l'une de vos zones de texte. Ou, plus banalement, le pauvre Daniel O'Reilly casserait votre requête à chaque fois.