0
我想在我的vb.net應用程序中開發select查詢生成器。如果用戶在富文本框中寫入「select query」,將執行查詢並將結果顯示在網格視圖中。任何人都會爲此發送示例應用程序。如何在我的應用程序中開發自定義查詢生成器?
我想在我的vb.net應用程序中開發select查詢生成器。如果用戶在富文本框中寫入「select query」,將執行查詢並將結果顯示在網格視圖中。任何人都會爲此發送示例應用程序。如何在我的應用程序中開發自定義查詢生成器?
要回答你的問題,看看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」或使用所有可用內存的非常複雜的查詢,該怎麼辦?
如果是數據庫管理員或開發人員,他們應該能夠使用像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.");
}
這是我做了,但我想限制用戶只能執行「選擇」命令,以及用戶給予的能力也可以執行連接查詢。請幫助我做到這一點。 – Sathish
我已經更新了一個關於如何驗證sql的工作示例。它要求查詢以「SELECT」開始並且不能包含;這限制了用戶在添加諸如DELETE之類的附加命令之後。 –
如果解決了您的問題,請將此答案標記爲已接受。 –