sql >> Database >  >> RDS >> Sqlserver

Ongeldige SQL-fout in kolomnaam

Je hebt waarschijnlijk aanhalingstekens nodig rond die tekenreeksvelden, maar je zou geparametriseerde zoekopdrachten moeten gebruiken!

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;

Overigens had je oorspronkelijke vraag als volgt kunnen worden opgelost (let op de enkele aanhalingstekens):

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

maar dit zou het kwetsbaar hebben gemaakt voor SQL-injectie-aanvallen aangezien een gebruiker kon typen

'; drop table users; -- 

in een van uw tekstvakken. Of, meer alledaags, de arme Daniel O'Reilly zou je vraag elke keer breken.



  1. Voeg een enkele kolom in een query samen met veel kolommen

  2. Ruby on Rails 3 Kan geen verbinding maken met lokale MySQL-server via socket '/tmp/mysql.sock' op OSX

  3. Uren toevoegen aan een tijdwaarde in PostgreSQL

  4. Grondbeginselen van tabeluitdrukkingen, deel 13 - Inline tabelgewaardeerde functies, vervolg