Вероятно имате нужда от кавички около тези низови полета, но трябва да използвате параметризирани заявки!
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;
Между другото, оригиналната ви заявка можеше да бъде коригирана по следния начин (обърнете внимание на единичните кавички):
"VALUES ('" + txtName.Text + "','" + txtPhone.Text + "','" + txtAddress.Text + "');";
но това би го направило уязвимо за атаки с инжектиране на SQL тъй като потребителят може да въведе
'; drop table users; --
в едно от вашите текстови полета. Или, по-обикновено, бедният Даниел О'Райли щеше да наруши заявката ви всеки път.