Pravděpodobně budete potřebovat uvozovky kolem těchto řetězcových polí, ale měli byste používat parametrizované dotazy!
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;
Mimochodem, váš původní dotaz mohl být opraven takto (všimněte si jednoduchých uvozovek):
"VALUES ('" + txtName.Text + "','" + txtPhone.Text + "','" + txtAddress.Text + "');";
to by jej však učinilo zranitelným vůči útokům SQL Injection protože uživatel mohl zadat
'; drop table users; --
do jednoho z vašich textových polí. Nebo, což je všednější, chudák Daniel O'Reilly by váš dotaz pokaždé přerušil.