C# 填充下拉列表
我有以下代码来填充dropdownlist:C# 填充下拉列表,c#,asp.net,ado.net,C#,Asp.net,Ado.net,我有以下代码来填充dropdownlist: string strConn = ConfigurationManager.ConnectionStrings["PhoQL"].ConnectionString; using (SqlConnection con = new SqlConnection(strConn)) { DataSet ds = new DataSet(); using (SqlDataAdapter myda = new SqlDataAdapter("SELECT
string strConn = ConfigurationManager.ConnectionStrings["PhoQL"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConn))
{
DataSet ds = new DataSet();
using (SqlDataAdapter myda = new SqlDataAdapter("SELECT [Abrv], [State] FROM [States]", con))
{
myda.Fill(ds)
ddlShipState.DataSource = ds;
}
}
ddlShipState.DataTextField = "State";
ddlShipState.DataValueField = "Abrv";
ddlShipState.DataBind();
我想知道是否有更有效的方法。请注意,我不必打开和关闭连接。在我的例子中,我想知道这是否会有所不同。
在更有效的方面,我正在寻找最好的代码实践为我以上
请注意,我不必打开和关闭连接
不,但是DataAdapter
会隐式执行此操作
:
如果IDbConnection在调用Fill之前关闭,则会将其打开到
检索数据,然后关闭。如果加注前连接已打开
被称为,它仍然是开放的
但也要注意,在使用(默认)时,打开和关闭并不是低效的。因为那时,con.Open
的意思是“等等,我现在需要这个连接”,而con.Close
的意思是“好的,你现在可以在其他地方重新使用它,我完成了”
因此,您应该始终在完成连接后立即关闭它。否则,连接池每次都需要打开新的物理连接,这可能会导致异常(最大默认连接计数为100),但始终会降低性能
处理/关闭连接(任何IDisposable
)的最佳方法是使用:
(SeNoTo:我用“打火机”<代码> DataTabe<代码> < /p> < p>替换了你的代码>数据集< /> >。如果你反复这样做,你应该考虑缓存数据:
这样,即使有10000个用户,您也只需点击数据库一次。我已经编辑了您的标题。请看,“,其中的共识是“不,他们不应该”。“更有效”如何?您应该使用
块将SqlConnection
和SqlDataAdapter
放入中,但除此之外,“更高效”是什么意思?定义高效?代码行?速度依我拙见,你的代码相当有效。但这实际上取决于你自己的需求。显然,使用using
语句,代码可能会更干净一些,但除此之外,它很好。@Cloud-感谢您的回复。我现在正在使用它。让我知道它是否可以改进。谢谢这应该是在代码审查真的。你好,蒂姆,你能帮我做以下事情吗
using(var con = new SqlConnection(ConfigurationManager.ConnectionStrings["PhoQL"].ConnectionString))
using(var cmd = new SqlCommand("SELECT [Abrv], [State] FROM [States]", con))
using(var da = new SqlDataAdapter(cmd))
{
DataTable tbl = new DataTable();
da.Fill(tbl);
ddlShipState.DataSource = tbl;
ddlShipState.DataTextField = "State";
ddlShipState.DataValueField = "Abrv";
ddlShipState.DataBind();
}