2011-02-07 73 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

相关问题