我使用followng代码绑定到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();
答案 0 :(得分:1)
在这种情况下,DataSource控件处理建立连接,读取连接和解析返回的内部逻辑。这本身就非常方便,但如果你需要更多控制就会引起问题。
从风格上讲,在您的UI中对SQL代码进行硬编码永远不是一个好主意,尽管您使用参数而不是连接是好的。
总体而言,没有“最佳方法”。基于维护/更改,代码漏洞,性能,可靠性,显示复杂性等因素,您的解决方案应根据您的问题量身定制。
我个人不喜欢数据源控件,但是当你不想花费大量时间配置网格时,它们对网格工作很有用。
SQLCommands是非常快速和最佳的,但你必须编写一个维护大量代码来使用它们,并且它可能有些脆弱。
DataAdapters / DataReaders / DataTables / DataSet比SQLCommands更容易编写维护,但它们在内存中可能很麻烦,并且通常不能正确处理。
Linq / ENF使编写和维护变得简单,但有时它们会让你用他们自己生成的sql调试问题而不是你自己的sql,并且执行速度通常较慢(通常是非无关紧要的数量)。
希望有助于回答你的问题。
答案 1 :(得分:0)
我认为您最好尝试使用linq和其他类型的编程(如实体框架工作等)来使用您的代码,因为它们可以使您的项目更快,更可靠。并且会导致编码减少。