如何在我的应用程序中开发自定义查询生成器

时间:2011-08-12 07:05:01

标签: vb.net custom-controls builder

我想在我的vb.net应用程序中开发select query builder。如果用户在richtext框中编写“选择查询”,将执行查询,结果将显示在网格视图中。任何人都会发送样本申请表。

1 个答案:

答案 0 :(得分:0)

要回答您的问题,请查看this answer on 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”或消耗所有可用内存的非常复杂的查询,该怎么办?

如果是DBA或开发人员,他们应该能够使用SQL Server Management Studio等开发工具。

<强>更新 验证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.");
}