整理 ASP.NET 開發中常用的陣列、ArrayList、ListItem、Hashtable、SortedList 等集合類型操作技巧,以及資料庫連線字串與 DataReader 使用模式。
// 查找索引
Array.IndexOf(abc, "3", 1); // 從索引 1 開始找 "3"
Array.LastIndexOf(abc, "3"); // 從末尾反向找 "3"
// 反轉與排序
string[] arrStr = new string[8] {"1","4","3","2","16","14","12","14"};
Array.Reverse(arrStr); // 反轉順序
Array.Sort(arrStr); // 字串排序:1,12,14,14,16,2,3,4(按字元碼)
提醒:Array.Sort 對字串陣列採用字典序,數值大小排序需實作 IComparer 或轉為數值型別。
ArrayList myArrList = new ArrayList(); // 無需指定大小,元素型別任意
myArrList.Add("Dog"); // 尾端新增
myArrList.Insert(1, "abc"); // 指定索引插入
myArrList.RemoveAt(1); // 移除指定索引
myArrList.Remove("abc"); // 移除第一個符合值的元素
ArrayList 適合頻繁增刪、元素型別不固定的場景,效能較陣列略低但彈性大。
ListItem newItem = new ListItem();
newItem.Text = "a";
newItem.Value = "b";
myDropDown.Items.Add(newItem);
// Hashtable:無序,Key 不重複
Hashtable ht = new Hashtable();
ht["1"] = "a";
ht.Add("2", "a");
// SortedList:依 Key 自動排序
SortedList sl = new SortedList();
sl["1"] = "a";
sl.Add("2", "a");
// 遍歷 SortedList
foreach (DictionaryEntry entry in sl)
{
// entry.Key, entry.Value
}
// Access (OLEDB)
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\abc.mdb"
// SQL Server (SqlClient)
"Server=127.0.0.1;DataBase=MyDataBase;uid=username;pwd=password"
// SQL Server (OLEDB)
"Provider=SQLOLEDB.1;Server=127.0.0.1;DataBase=MyDataBase;Initial Catalog=MyCatalog;uid=username;pwd=password"
Access 連線字串建議加 @ 前綴避免路徑跳脫字元問題。
OleDbConnection con = new OleDbConnection(connstr);
OleDbCommand cmd = new OleDbCommand("select * from employees", con);
con.Open();
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Response.Write(dr["FirstName"] + "<br>");
}
dr.Close();
con.Close(); // Command 不需顯式關閉
關鍵:DataReader 與 Connection 必須關閉,建議搭配 using 區塊確保資源釋放。
| 特性 | HTML 控件 (runat="server") | Web 控件 (<asp:TextBox>) |
|---|---|---|
| 點擊事件 | OnServerClick | OnClick |
| 取值屬性 | .Value | .Text |
| Span 寫入 | .InnerText | N/A |