Как разработать пользовательский конструктор запросов в моем приложении? - PullRequest
0 голосов
/ 12 августа 2011

Я хочу разработать конструктор запросов в моем приложении vb.net.Если пользователь напишет «запрос выбора» в поле расширенного текста, этот запрос будет выполнен, а результат будет отображен в виде сетки.Любой отправит образец заявки на это.

1 Ответ

0 голосов
/ 12 августа 2011

Чтобы ответить на ваш вопрос, посмотрите этот ответ на 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.");
}
...