Você provavelmente precisa de aspas nesses campos de string, mas você deve usar consultas parametrizadas!
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;
Aliás, sua consulta original poderia ter sido corrigida assim (observe as aspas simples):
"VALUES ('" + txtName.Text + "','" + txtPhone.Text + "','" + txtAddress.Text + "');";
mas isso o tornaria vulnerável a ataques de injeção de SQL já que um usuário pode digitar
'; drop table users; --
em uma de suas caixas de texto. Ou, mais mundanamente, o pobre Daniel O'Reilly iria quebrar sua consulta todas as vezes.