Чтобы ответить на ваш вопрос, посмотрите этот ответ на codeproject.com :
SqlConnection con = new SqlConnection("Your Connection String Here");
con.Open();
SqlCommand cmdQuery = new SqlCommand("Your Query Here", con);
SqlDataReader drQuery = cmdQuery.ExecuteReader();
DataSet dsQuery = new DataSet();
DataTable dtQuery = new DataTable();
dsQuery.Tables.Add(dtQuery);
dsQuery.Load(drQuery, LoadOption.PreserveChanges, dsQuery.Tables[0]);
DataGridView1.DataSource = dsQuery.Tables[0];
Рекомендация: никогда не позволяйте своим пользователям вводить SQL напрямую. Вы должны сделать все возможное, чтобы избежать этого, поскольку теряете контроль над безопасностью и производительностью.
Что делать, если пользователь запускает «DELETE FROM dbo.Orders» или очень сложный запрос, занимающий всю доступную память?
Если они предназначены для администраторов баз данных или разработчиков, они должны иметь возможность использовать такие инструменты разработки, как SQL Server Management Studio или подобные.
UPDATE:
Рабочий пример для проверки SQL:
string sql = "SELECT * FROM Table1 AS t1 INNER JOIN Table2 AS t2 ON t1.ID = t2.ParentID";
if (System.Text.RegularExpressions.Regex.IsMatch(sql, "^SELECT([^;])$",System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
// do something
}
else
{
throw new InvalidOperationException("You're not allowed to execute nothing but SELECT-queries.");
}