[英]Query for filter in SQL to extract data and display in c# DataGrid
[英]Save data from custom sql query bound to a DataGrid in C#
所以我有這個問題-我想允許我的應用程序的用戶對PostgreSql數據庫運行選擇查詢,我希望這些查詢返回的數據綁定到DataSet
> DataGrid
。 問題是“自定義”部分:)。 當然,當我嘗試使用join子句編輯來自查詢的數據時,麻煩就開始了。 我收到一個錯誤消息,說由於缺少主鍵列而無法自動生成UpdateCommand
,這是可以預期的(嗯,至少我期望如此)...我想出的解決方案是原始的,但對於我-我有一個表名列表,當在自定義查詢中找到這些表名之一時,我想立即生成自己的UpdateCommand
。 所以:
類似於偽代碼:
string[] names = new string[] { "table1", "table2" };
string customQuery = GetWhateverUserWroteInATextBox();
//what I want to do is to find name coming from names array in the customQuery
我稱其為自定義查詢,因為用戶編寫了查詢,而我無法預測用戶輸入的內容。
正如您所說的,正則表達式有點棘手...
string[] tableNames = new string[] { "table1", "table2" };
List<string> fields = new List<string>();
Regex rgx = new Regex(@"\w+(?=\s?,?)");
MatchCollection matches = rgx.Matches(textBox1.Text);
foreach (Match m in matches)
{
if (!tableNames.Contains(m.Value))
{
fields.Add(m.Value);
}
}
如果U可以說服您的用戶使用來分隔字段,
則可以正常使用;)
如果我的模式與您的姓名樣式不匹配,則可以制作自己的模式,這是一些說明:
用戶輸入自己的查詢的方式不好,因為:
對於這種查詢,您必須通知用戶表和字段名稱。 這意味着您要放松警惕,接受一些安全風險。
它不是用戶友好的。 用一堆名字和一些硬性規則來填充文本框對於用戶來說並不簡單。 請注意,要成為一名優秀的開發人員,您必須想象所有用戶都是懶惰和白痴。
您不能阻止用戶的訪問。 如果用戶可以進行自己的查詢,那么他們可以簡單地對您的所有記錄和表進行所有查詢。 在這種情況下,某些信息可能必須隱藏起來,您無法保證。
您不能說服用戶在進行新查詢時不遵守規則,否則將對您和用戶造成錯誤。
您可以簡單地創建自己的界面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.