1

我正在使用以下代码绑定到 ASP.NET DataGrid。我有以下内容,它可以工作,但想知道这是否是最好的方法。我关心的几件事是我不需要打开连接,也没有使用 DataReader。请注意,这是在我的页面后面的代码中编写的。

             string strConn =  ConfigurationManager.ConnectionStrings["SQL1"].ConnectionString; 
             SqlDataSource DataSource1 = new SqlDataSource();  
             DataSource1.ConnectionString = strConn;
             DataSource1.SelectCommand = "SELECT * FROM tblTruck where LocId = @LocID ";     

             DataSource1.SelectParameters.Add(new Parameter("LocId", System.TypeCode.String, value));                 
             Grid1.DataSource = DataSource1.Select(DataSourceSelectArguments.Empty); 
             Grid1.Rebind();   
4

2 回答 2

1

在这种情况下,DataSource 控件处理建立连接、读取连接和解析返回的内部逻辑。这本身非常方便,但如果您需要更多控制,则会导致问题。

从风格上讲,在 UI 中硬编码 SQL 代码从来都不是一个好主意,尽管使用参数而不是连接是好的。

总体而言,没有“最佳方法”。根据维护/更改、代码漏洞、性能、可靠性、显示复杂性等因素,您的解决方案应针对您的问题量身定制。

我个人不喜欢数据源控件,但是当您不想花费大量时间配置网格时,它们对网格工作很有用。

SQLCommands 非常快速且最佳,但是您必须编写维护大量代码才能使用它们,而且它可能有些脆弱。

DataAdapters/DataReaders/DataTables/DataSets 比 SQLCommands 更容易编写维护,但它们在内存中可能很麻烦,并且经常无法正确处理。

Linq/ENF 都使编写和维护变得容易,但有时它们会让您使用自己生成的 sql 而不是您自己的 sql 来调试问题,并且通常执行速度较慢(通常是一个不小的数量)。

希望这有助于回答您的问题。

于 2012-10-29T19:50:09.973 回答
0

我认为您最好尝试改进您的代码以使用 linq 和其他类型的编程,如实体框架工作等。因为它们使您的项目更快、更可靠。它会导致编码减少。

于 2012-10-29T20:10:20.967 回答