2011-02-07 77 views
1

我有一個Winforms應用程序,它可以讓用戶創建自己的報告。最簡單的設計是將查詢加密並保存到數據庫中。在運行時通過用戶生成的SQL顯示數據

能夠通過網絡查看這些報告,就像我們現在看到的那樣。

處理這個問題的最佳方法是什麼?理想情況下,我想使用MVC,但不會有模型或視圖模型,因爲這些查詢可以爲應用程序中的任何表返回數據,所以我不能使用硬編碼的propeties等。顯然,我有權訪問SQL來執行它。

我不知道傳統ASP.Net在這種情況下可能表現更好,即/執行SQL並將其放入DataTable中,但希望從社區獲得一些想法。

回答

1

在類似的情況下,我在客戶端使用了ASP.NET MVC和DataTables.net。我在DataSet上有一個擴展方法,它返回DataTables.net所需的JSON格式的數據。在描述每列的html中需要一個table/thead stub,但是如果從SQL查詢中解析列名稱,或者如果在用戶設計報表時存儲列元數據,則可能會生成該列表,或者更好。

1

您將使用什麼版本的.NET?如果是4,那麼您可以使用新的dynamic關鍵字。

作爲一個例子在新的網絡矩陣中使用。它需要一個sql字符串並執行查詢,並且生成的對象具有sql表字段作爲屬性。

由於Web矩陣是建立在.NET平臺上的,因此您可以在Visual Studio中使用相同的庫和方法。

如果您不知道將在對象上的屬性,則可以使用反射來循環對象中的屬性。

這是一個link,它顯示了一些基本知識。

更新:

var db = Database.Open("bakery"); 
var p = db.Query("SELECT * FROM PRODUCTS"); // This returns a list of products 

或單個結果

var db = Database.Open("TDL"); 
var selectQueryString = "SELECT * FROM Articles WHERE slug = @0"; 
var show = db.QuerySingle(selectQueryString, slug); 

第一個例子來自我已經包括了鏈接,第二次是從here

更新2:

你所需要的組件是WebMatrix.Data和WebMatrix.WebData,MSDN。正如我之前所說的,您需要使用反射來查找對象屬性,只需要Google c#反射,並且有許多關於使用它的教程。

+0

你能給我一個鏈接來執行一個SQL腳本,它返回一個動態創建屬性的對象? – Jon 2011-02-07 10:45:40

+0

剛剛更新了我的答案。 – lancscoder 2011-02-07 10:52:03

相關問題