我想在我的vb.net应用程序中开发select query builder。如果用户在richtext框中编写“选择查询”,将执行查询,结果将显示在网格视图中。任何人都会发送样本申请表。
答案 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.");
}