.NET裡的SystemException系統例外類別整理

SystemException

1. OutOfMemoryException 類別

1.1 當沒有足夠的記憶體繼續執行程式時,所擲回的例外狀況。

2. StackOverflowException 類別

2.1 例外狀況,擲回於執行堆疊因為包含過多巢狀方法呼叫而溢位時。這個類別無法被繼承。

3. DataMisalignedException 類別

3.1 從位址讀取資料單元,或將資料單元寫入位址時,若資料單元不是資料大小的倍數,就會擲回例外狀況 (Exception)。這個類別無法被繼承。

4. ExecutionEngineException 類別

4.1 當 Common Language Runtime 執行引擎中有內部錯誤時,會擲回的例外狀況。這個類別無法被繼承。

5. MemberAccessException 類別

5.1 嘗試存取類別成員失敗時所擲回的例外狀況。

6. AccessViolationException 類別

6.1 嘗試讀取或寫入受保護的記憶體時,擲回的例外狀況 (Exception)。

7. AppDomainUnloadedException 類別

7.1 嘗試存取已卸載應用程式定義域時所擲回的例外狀況。

8. ArgumentException 類別

8.1 當其中一個提供給方法的引數為無效時所擲回的例外狀況。

9. ArithmeticException 類別

9.1 為算術、轉型 (Casting) 或轉換作業中的錯誤擲回例外狀況。

10. ArrayTypeMismatchException 類別

10.1 嘗試在陣列中儲存錯誤型別的元素時所擲回的例外狀況。

11. BadImageFormatException 類別

11.1 當 DLL 或可執行程式的檔案映像為無效時,所擲回的例外狀況。

12. CannotUnloadAppDomainException 類別

12.1 嘗試卸載應用程式定義域失敗時所擲回的例外狀況。

13. TypeUnloadedException 類別

13.1 當試著存取已卸載的類別時,所擲回的例外狀況。

14. ContextMarshalException 類別

14.1 當跨越內容界限封送處理物件的嘗試失敗時所擲回的例外狀況。

15. TypeLoadException 類別

15.1 當發生型別載入錯誤時,所擲回的例外狀況。

16. FormatException 類別

16.1 當引數的格式不符合叫用 (Invoke) 方法的參數規格時所擲回的例外狀況。

17. IndexOutOfRangeException 類別

17.1 嘗試使用陣列以外的索引來存取陣列的元素時所擲回的例外狀況。這個類別無法被繼承。

18. InvalidCastException 類別

18.1 無效的轉型 (Casting) 或明確轉換所擲回的例外狀況。

19. InvalidOperationException 類別

19.1 當方法呼叫對物件的目前狀態是無效時所擲回的例外狀況。

20. InvalidProgramException 類別

20.1 例外狀況,當程式包含無效的 Microsoft Intermediate Language (MSIL) 或中繼資料 (Metadata) 時會擲回這個例外狀況。通常,這表示在產生程式的編譯中有錯誤。

21. MulticastNotSupportedException 類別

21.1 例外狀況,擲回於嘗試組合以 Delegate 型別 (而不是 MulticastDelegate 型別) 為基礎的兩個委派 (Delegate) 時。這個類別無法被繼承。

22. NotImplementedException 類別

22.1 當要求的方法或作業不實作時所擲回的例外狀況。

23. NotSupportedException 類別

23.1 當不支援叫用的方法,或是嘗試讀取、搜尋或寫入不支援叫用功能的資料流時,所擲回的例外狀況。

24. NullReferenceException 類別

24.1 當嘗試解除 Null 物件的參考時,所擲回的例外狀況。

25. OperationCanceledException 類別

25.1 在取消執行緒執行的作業之後,在執行緒中擲回的例外狀況。

26. RankException 類別

26.1 當將錯誤維度 (Dimension) 數目的陣列傳遞給方法時,所擲回的例外狀況。

27. TimeoutException 類別

27.1 分配給處理或作業的時間已經過期時所擲回的例外狀況。

28. TypeInitializationException 類別

28.1 因為當做類別初始設定式 (Class Initializer) 所擲回例外狀況的包裝函式,所擲回的例外狀況。這個類別無法被繼承。

29. UnauthorizedAccessException 類別

29.1 當作業系統因為 I/O 錯誤或特定類型的安全性錯誤而拒絕存取時,所擲回的例外狀況。

30. UriTemplateMatchException 類別

30.1 表示比對 Uri 與 UriTemplateTable 時的錯誤。

31. KeyNotFoundException 類別

31.1 當為存取集合中的項目所指定的索引鍵與集合中的任何索引鍵都不相符時,擲回的例外狀況。

32. SerializationException 類別

32.1 當序列化 (Serialization) 或還原序列化 (Deserialization) 期間發生錯誤時,擲回的例外狀況。

33. ExternalException 類別

33.1 所有 COM Interop 例外狀況 (Exception) 和結構化例外處理 (Structured Exception Handling,SEH) 例外狀況的基底例外狀況類型。

34. InvalidOleVariantTypeException 類別

34.1 封送處理器碰到無法封送處理至 Managed 程式碼的 Variant 型別引數時,所擲回的例外狀況。

35. MarshalDirectiveException 類別

35.1 例外狀況,由封送處理器擲回於遭遇不支援的 MarshalAsAttribute 時。

36. InvalidComObjectException 類別

36.1 使用無效的 COM 物件時便會擲回例外狀況。

37. SafeArrayRankMismatchException 類別

37.1 當連入 SAFEARRAY 的順序不符合 Managed 簽章中指定的順序時,所擲回的例外狀況。

38. SafeArrayTypeMismatchException 類別

38.1 當連入 SAFEARRAY 的型別不符合 Managed 簽章中指定的型別時,所擲回的例外狀況。

39. XmlSyntaxException 類別

39.1 當解析 XML 時發生語法錯誤,所擲回的例外狀況。這個類別無法被繼承。

40. SecurityException 類別

40.1 當偵測到安全性錯誤時所擲回的例外狀況。

41. HostProtectionException 類別

41.1 在偵測到拒絕的主機資源時所擲回的例外狀況。

42. VerificationException 類別

42.1 例外狀況,是當安全性原則要求程式碼為型別安全 (Type-Safe) 而驗證處理序無法驗證程式碼為型別安全時被擲回。

43. AmbiguousMatchException 類別

43.1 當繫結至成員時所擲回的例外狀況 (Exception) 會產生一個以上符合繫結準則的成員。這個類別無法被繼承。

44. ReflectionTypeLoadException 類別

44.1 如果無法載入模組中的任何類別時,由 Module..::.GetTypes 方法所擲回的例外狀況。這個類別無法被繼承。

45. AbandonedMutexException 類別

45.1 當一個執行緒取得另一個執行緒已放棄,但是結束時並未釋放的 Mutex 物件時,所擲回的例外狀況。

46. SynchronizationLockException 類別

46.1 方法要求呼叫端擁有指定 Monitor 的鎖定,但是不擁有鎖定的呼叫端叫用方法時所擲回的例外狀況。

47. ThreadAbortException 類別

47.1 對 Abort 方法呼叫時所擲回的例外狀況。這個類別無法被繼承。

48. ThreadInterruptedException 類別

48.1 Thread 處於等候狀態時被插斷而擲回的例外狀況。

49. ThreadStateException 類別

49.1 當 Thread 對於方法的呼叫來說處於無效 ThreadState 時所擲回的例外狀況。

50. ThreadStartException 類別

50.1 當基礎作業系統執行緒已經啟動,但此執行緒還沒準備好執行使用者程式碼之前,如果 Managed 執行緒內有任何錯誤發生,就會擲回這個例外狀況。

51. SemaphoreFullException 類別

51.1 在已經達到最大計數的號誌上呼叫 Semaphore..::.Release 方法時,所擲回的例外狀況。

52. RemotingException 類別

52.1 在遠端處理期間情形不對勁時所擲回的例外狀況。

53. ServerException 類別

53.1 向用戶端傳達錯誤的例外狀況,當用戶端連接至無法擲回例外狀況的非 .NET Framework 應用程式時,就會擲回這個例外狀況。

54. MissingManifestResourceException 類別

54.1 如果主要組件沒有包含中性文化特性 (Culture) 的資源,而該資源因為遺漏適當的附屬組件而成為必要時,所擲回的例外狀況。

55. MissingSatelliteAssemblyException 類別

55.1 中性文化特性之資源的附屬組件遺漏時擲回的例外狀況。

56. PolicyException 類別

56.1 當原則禁止程式碼執行時所擲出的例外狀況。

57. IdentityNotMappedException 類別

57.1 表示主體的例外狀況,該主體的識別 (Identity) 無法對應至已知的識別。

58. IOException 類別

58.1 當 I/O 錯誤發生時所擲回的例外狀況。

59. InvalidDataException 類別

59.1 資料流在格式無效時擲回的例外狀況。

60. InternalBufferOverflowException 類別

60.1 在內部緩衝區溢位時擲回的例外狀況。

61. CryptographicException 類別

61.1 密碼編譯作業中發生錯誤時所擲回的例外狀況。

62. XamlParseException 類別

62.1 表示剖析器特定之例外狀況 (Exception) 的例外狀況類別。

63. InvalidWmpVersionException 類別

63.1 不支援安裝的 Microsoft Windows Media Player 版本時所擲回的例外狀況。

64. AnimationException 類別

64.1 在建立屬性動畫時發生錯誤所擲回的例外狀況 (Exception)。

65. ElementNotAvailableException 類別

65.1 包含在嘗試存取 UI 自動化項目時所引發之例外狀況的相關資訊,此項目對應至已無法使用的使用者介面部分。

66. LicenseException 類別

66.1 表示元件無法取得授權時,所擲回的例外狀況。

67. WarningException 類別

67.1 指定被當做警告而非錯誤處理的例外狀況。

68. PrintSystemException 類別

68.1 當錯誤狀況防止存取或建立 PrintSystemObject 時,發生的例外狀況 (Exception)。

69. ConfigurationException 類別

69.1 發生組態系統錯誤時所擲回的例外狀況。

70. InstallException 類別

70.1 安裝的認可、復原或解除安裝階段發生錯誤時所擲回的例外狀況。

71. DataException 類別

71.1 表示會在使用 ADO.NET 元件產生錯誤時所擲回的例外狀況。

72. DBConcurrencyException 類別

72.1 受影響的資料列數目等於零時,由 DataAdapter 在插入、更新或刪除作業期間擲回的例外狀況。

73. OperationAbortedException 類別

73.1 當使用者中止了正在進行的作業時,會擲回這個例外狀況。

74. InvalidUdtException 類別

74.1 當 SQL Server 或 ADO.NET System.Data.SqlClient 提供者偵測到無效的使用者定義型別 (UDT) 時會擲回。

75. SqlException 類別

75.1 當 SQL Server 傳回警告或錯誤時所擲回的例外狀況。這個類別無法被繼承。

76. SqlTypeException 類別

76.1 System.Data.SqlTypes 的基底例外狀況 (Exception) 類別。

77. XmlException 類別

77.1 傳回有關上次例外狀況的詳細資訊。

78. XsltException 類別

78.1 在處理 XSLT 轉換時發生錯誤所擲回的例外狀況。

79. DeploymentException 類別

79.1 定義所有與部署相關之例外狀況的基底類別。

80. CodeDomSerializerException 類別

80.1 序列化錯誤可取得行號資訊時所擲回的例外狀況。

81. PrincipalException 類別

81.1 由 System.DirectoryServices.AccountManagement 物件所擲回之例外狀況的基底類別。

82. AuthenticationException 類別

82.1 當驗證資料流驗證失敗時所擲回的例外狀況。

83. InvalidPrinterException 類別

83.1 表示在嘗試使用無效的印表機設定來存取印表機時擲回的例外狀況。

84. ServicedComponentException 類別

84.1 Serviced 元件中偵測到錯誤時所擲回的例外狀況。

85. RegistrationException 類別

85.1 在偵測到註冊錯誤時所擲回的例外狀況。

86. SecurityTokenException 類別

86.1 在處理安全性權杖時發生問題所擲回的例外狀況。

87. ManagementException 類別

87.1 表示管理例外狀況。

88. CommunicationException 類別

88.1 代表服務或用戶端應用程式的通訊錯誤。

89. QuotaExceededException 類別

89.1 超過訊息配額時所擲回的例外狀況。

90. InvalidMessageContractException 類別

90.1 表示無效的訊息合約。

91. InvalidBodyAccessException 類別

91.1 當存取訊息本文的嘗試未獲得允許時,所擲回之例外狀況的 abstract 基底類別 (Base Class)。

92. MultipleFilterMatchesException 類別

92.1 當多個篩選條件相符,但預期只有一個相符時所擲回的例外狀況。

93. TimeoutException 類別

93.1 指定的逾時已經過期時所擲回的例外狀況。

94. TransactionException 類別

94.1 當您嘗試在無法接受新工作的交易上執行工作時,所擲回的例外狀況。

95. DatabaseNotEnabledForNotificationException 類別

95.1 在未啟用 SQL Server 資料庫而無法支援與 SqlCacheDependency 類別相關聯的相依性時,所擲回的例外狀況。這個類別無法被繼承。

96. TableNotEnabledForNotificationException 類別

96.1 對沒有啟用變更告知的資料庫資料表使用 SqlCacheDependency 類別時,所擲回的例外狀況。

97. SqlExecutionException 類別

97.1 在 System.Web.Management 命名空間中定義 SQL 執行例外狀況的類別。

98. SoapException 類別

98.1 表示例外狀況,在經由 SOAP 呼叫 XML Web Service 方法而發生例外狀況時擲回。

99. WorkflowAuthorizationException 類別

99.1 當因為指定的身分識別未包含在 WorkflowRoleCollection 之內,而導致角色驗證失敗時,會擲回例外狀況。

100. EventDeliveryFailedException 類別

100.1 當無法將從主應用程式引發的事件傳遞給工作流程執行個體時擲回的例外狀況。一般而言,事件是從工作流程執行個體上的 ExternalDataExchangeService 引發。這個類別無法被繼承。

101. PersistenceException 類別

101.1 持續性服務無法完成要求時所擲回的例外狀況。

102. TrackingProfileDeserializationException 類別

102.1 TrackingProfileSerializer 無法將 XML 文件還原序列化至 TrackingProfile 中時,所擲回的例外狀況。

103. XmlSchemaException 類別

103.1 傳回結構描述例外狀況的詳細資訊。

104. XPathException 類別

104.1 提供例外狀況,此例外狀況在處理 XPath 運算式中發生錯誤時擲回。


線上觀看:
http://www.xmind.net/account/kkbruce/

直接下載:

繁體簡體--(62)繁體簡體用詞對照表--俗語

俗語
大陸用詞    簡體字    台灣用詞
牛       牛      稱人很厲害
牛B       牛B     很強、很厲害
傻B       傻B     很傻、很愚蠢、很沒腦
小鞋      小鞋     喑中刁難
鼓足勁     鼓足劲    卯勁
小打小鬧    小打小闹   小規模進行某種活動
可愛、逗人喜歡 可爱、逗人喜欢 古錐
小圈子     小圈子    狹小生活圈
出頭鳥     出头鸟    群眾中的領導者
傻頭傻腦    傻头傻脑   笨拙
貓膩      猫腻     陷阱
大操大辦    大操大办   辦紅白喜事中擺闊氣
大牆/高牆    大墙/高墙  監獄場地
千人一面    千人一面   千面人
反面教材    反面教材   負面教材
一鍋端     一锅端    一下子解決問題
一攬子     一揽子    所有
下台階     下台阶    設法擺脫困境
下坡路     下坡路    走向衰落或滅亡
大染缸     大染缸    使用墮落的環境
公了      公了     走法律程序解決問題
打擦邊球    打擦边球   游走政府法令邊緣,取得合法空間
吃不準     吃不准    沒把握
行       行      可以
鐵公雞     铁公鸡    吝嗇鬼
上眼藥     上眼药    伺機為他人安上罪名
冷不丁     冷不丁    冷不防
沒門兒     没门儿    沒希望
沒轍兒     没辙儿    沒辦法
邪門兒     邪门儿    怪事
侃(砍)大山   侃(砍)大山  閒聊、吹牛
侃爺、砍爺   侃爷、砍爷  蓋仙
磨嘴      磨嘴     遊說
挑刺兒     挑刺儿    故意挑毛病
耍貧嘴     耍贫嘴    愛鬥嘴
倒插門     倒插门    入贅
耳旁風     耳旁风    馬耳東風
麻麻亮     麻麻亮    天剛亮
麻麻黑     麻麻黑    天快黑
絕活兒/絕活方  绝活儿/绝活方 獨一無二的手藝
開小灶     开小灶    提供特殊待遇
白帽子     白帽子    專業素養不足、素質差的人
搬起石頭砸自己的腳 搬起石头砸自己的脚 自取其辱
翹尾巴     翘尾巴    驕傲
宰客      宰客     騙取遊客財物的行為
一風吹     一风吹    一筆勾消
吹喇叭     吹喇叭    拍馬屁
潑髒水     泼脏水    造謠
牛鼻子     牛鼻子    關鍵、要害
放白鴿     放白鸽    騙婚
吃白飯/吃乾飯  吃白饭/吃干饭  光吃飯不幹活
無用      无用     沒路用
白吃飯不給錢  白吃饭不给钱 霸王餐
揭蓋子     揭盖子    揭發真相
不分高低    不分高低   不分軒輊
觀潮派     观潮派    在旁觀察卻始終不表明態度的人
吧兄吧弟    吧兄吧弟   經常出入酒吧的男人
放冷風     放冷风    惡意批評、散佈謠言

繁體簡體--(61)繁體簡體用詞對照表--股票

股票
大陸用詞    簡體字    台灣用詞
割肉      割肉     認賠了結
股盲      股盲     對股票毫無概念的人
托盤      托盘     撐盤量
刮盤      刮盘     買盤
盤上      盘上     盤漲
盤下      盘下     盤跌
美子      美子     大陸美元俗稱
調位      调位     進場干預
一線股     一线股    高價股
二線股     二线股    中間價位股
不發言權    不发言权   緘默權
踏空      踏空     錯失買股時機
吊空      吊空     暴漲
A股       A股     專供大陸內地投資人買賣的股票
B股       B股     專供境外外幣投資人買賣的股票
H股       H股     在香港掛牌上市的內地股票
做底      做底     股價停留在谷底的時間
打滑板     打滑板    短線操作
一級半市場   一级半市场  未上市買賣
一級市場    一级市场   新發行證券市場
二級市場    二级市场   證券交易所
莊家概念股   庄家概念股  投機股
虧損概念股   亏损概念股  業外虧損
雙向擴容    双向扩容   價漲量增
首發式     首发式    公開說明會
長線客     长线客    長期持股並利用股價波動或股息獲利的投資人
道.瓊斯指數  道.琼斯指数 道瓊指數

繁體簡體--(60)繁體簡體用詞對照表--時間

時間
大陸用詞    簡體字    台灣用詞
半夜三更    半夜三更   半暝三更
高峰時期    高峰时期   尖峰時段
年頭      年头     年初
年夜      年夜     年宵
年底      年底     年杪
休息時間    休息时间   空檔
濛濛亮     蒙蒙亮    蒙明
近期      近期     近程
好年頭     好年头    好年冬
大休日     大休日    大禮拜
公曆      公历     西曆

超快速物件導向(Object-Oriented Programming,OOP)概念複習(VB.NET)

封裝


  由類別(Class)來封裝「資料成員、方法(Sub/Function)、屬性(Property)、建構式(New)」

  一、定義Class

Public Class Bruce

End Class


  二、含Namespace的Class定義

Namespace KK
Public Class Bruce
    
End Class
End Namespace


繼承


  BaseClass(父,基礎)        NewClass(子,衍生)
    NotInheritable          Inherits

  NotInheritable:不可被繼承。

Public NotInheritable Class Bruce

End Class


  Inherits:繼承BaseClass。

Public Class Bruce
Inherits Customer

End Class


繼承--覆寫


  BaseClass(父,基礎)        NewClass(子,衍生)
    Overridable            Overrides
                      Shadows
                      MyBase

  Overridable:方法可被覆寫。

Public Class Bruce
Public Overridable Function FunName(ByVal a As Integer) As Integer
  '...
End Function
End Class


  Overrides:覆寫BaseClas方法。

Public Class KingKong
Inherits Bruce
Public Overrides Function FunName(ByVal a As Integer) As Integer
    '...
End Function
End Class


  Shadows:建立同名新方法,非覆寫BaseClass版本。

Public Class KingKong
Inherits Bruce
Public Shadows Function FunName(ByVal a As Integer) As Integer
  '...
End Function
End Class


  MyBase:在NewClass引用BaseClass版本方法。

抽象


  MustInherit BaseClass(父,基礎)  NewClass(子,衍生)
    MustOverride            Overrides

  MustInherit:宣告為抽象類別。
  MustOverride:宣告抽象方法。

Public MustInherit Class Bruce
Public MustOverride Function FunName(ByVal a As Integer) As Integer
End Class


  Overrides:實作抽象方法。

Public Class KingKong
Inherits Bruce
Public Overrides Function FunName(ByVal a As Integer) As Integer
  '...
End Function
End Class


介面


  Interface(介面)          NewClass(子,衍生)
                      Implements

  Interface:宣告介面。(一般都會使用大寫I開頭)

Interface IBruce
Function FunName() As Integer

End Interface


  Implements:實作介面。

Public Class KingKong
Implements IBruce
Public Function FunName() As Integer Implements IBruce.FunName
  '...
End Function
End Class

繁體簡體--(59)繁體簡體用詞對照表--軍事

軍事
大陸用詞    簡體字    台灣用詞
噴氣式飛機   喷气式飞机  噴射機
宇宙飛船    宇宙飞船   太空船
航天飛機    航天飞机   穿梭機
航天技術    航天技术   太空技術
統一戰線    统一战线   統戰
聯合戰線    联合战线   統戰
軍事法院    军事法院   軍事法庭
不明飛行物   不明飞行物  UFO、幽浮
宇航員     宇航员    太空人
導彈      导弹     飛彈
炸彈      炸弹     爆裂彈
爆炸物     爆炸物    爆裂物
二炮      二炮     第二炮兵
二野      二野     第二野戰軍
超聲波     超声波    超音波
海司      海司     海軍司令部
激光      激光     雷射
航天航空工業  航天航空工业 航空太空工業
反應堆     反应堆    核子反應爐
軍管      军管     軍事管制
核試驗     核试验    核子試爆
原子彈爆炸   原子弹爆炸  核爆
核武器     核武器    核武
核電站     核电站    核能發電廠
日本佔領時期  日本占领时期 日據時期
戰機      战机     用兵作戰的時機
識別信號    识别信号   辦證信號
指戰員     指战员    總司令
巡航導彈    巡航导弹   巡弋飛彈
演練      演练     操演
戰鬥力     战斗力    戰力
戰鬥分界線   战斗分界线  戰鬥地境線
步坦協同    步坦协同   步戰協同
命中概率    命中概率   命中機率
自行火炮    自行火炮   自走炮
航空攝影    航空摄影   空照
推動力     推动力    推力
軍用飛機    军用飞机   軍機
阻滯      阻滞     阻絕
數字化部隊   数字化部队  數位化部隊
信息戰     信息战    資訊戰
航天      航天     太空航行
宇宙空間站   宇宙空间站  太空站
航天站     航天站    太空站
宇宙服     宇宙服    太空衣
晉升職務    晋升职务   晉任
出入境管理   出入境管理  境管
軍事機密    军事机密   軍機
保密防諜    保密防谍   保防
組訓      组训     編訓
步坦      步坦     步戰
硅       硅      矽

上層定義一切

  繼「開口」事件後,我才知道,原來公司一切的定義都不是我們書本上所說的,讀書時其時就說的很清楚,書上的東西叫「理論」,而且你一定知道「理論與現實」是有差距的。

  公司內部所多文件、流程…在定義時,都會需要我們最高層級做最後的決策,而在文件中不太可能直接寫Boss name、董事長、總經理,所以我們文件中將這個角色統一稱呼為「上層」,這個名詞不錯用,反正比你高層級的通通用上層就不會錯。

  今天接著討論「MPOL」。
  上層說:「這一次買了這個MPOL以後,理論上以後辦公室所有電腦應該都可以全部升級到最新版本了。」(我們還有Office 2003)
      「而且未來最新版的Office 2010,我們也可以正常使用,是不是!」

  我:「憋著嘴,不敢出聲。」

  上層說:「而且這一次買MOPL的事,你一定要保密,請把你的序號保護好,只能你和我兩個人知道。」
      「更重要的,你不能把我們有幾組授權的事說出去。」
      「…」
      「請你注意一下資訊安全。」
      「…」
      「This is your job, Not my job.」

  我悟了,原來書上的一切在現實裡都是XD,原來資訊安全是這樣用的,小員工我佩服佩服。最後我只能回到座位修改我的MSN抬頭:

  「要我做違法的事,免談,大不了不幹了。」生一生氣。

  到了現在,我還是很在意。

老闆你終於開口了

  2009/8/26是一個快樂的早晨,一大早進到公司,人都還沒有坐下,同事大美女Jane就拿著「金莎」發送,原來今天是情人節,拿著這快樂的巧克力,心情也更好了。

  話說,公司最近有幾位新同事要報到,所以也開始採購電腦、軟體…。就在與Boss幾封Mail討論之後,也是今早被Boss叫進了他那大又空的房間裡。先是討論一些無傷大雅,但不太愉快的事(About 硬體),之後討論到「Office軟體」的事。

  Boss希望以後可以改採用大量授權方案。

  公司成立之初,為了簡省經費,所以都是採購「隨機版」,就是說,增加一個人、一台Server,就採購一個人所需的作業系統和軟體,Server以作業系統為主。在我管理之下,公司電腦的軟體授權都是「剛剛好」。

  雖然上層在要簽名買軟體時,都會右轉左轉的表示,有沒有辦法不買這軟體,但又可以用這軟體,我都會表示「不可能」或「我沒辦法」,最後他們也只能低頭…簽名。連要我安裝個WinRAR,我都買正式版,不然請不要找我安裝。 因為你幫這些人裝了之後,他們就會叫著說,怎麼是測試版的、測試版的不能用、測試版的…,能不能幫我裝「非測試版」,聽了就煩。「盜版

  也許是這種「固人怨」的個性,所以…

  買大量授權是好事,我也不反對,而且長期而言,第一次比較痛,但後續在使用上、升級上就比較能感受到「MOPL」的價值。但這種MOPL有種特性,就是不用「啟動」這種事。也就是說雖然最低的MOPL是5套,但我安裝在10台、100台、1000台,MS根本就沒有人知道。

  但這都不是我的重點,重點是Boss居然怪我以前「授權」買的太足,花太多錢了,為什麼不採用「這種」方式,最後還「絡」下一句:「沒有人把授權買足的。」

  聽了…心好痛。

  我想,未來授權不足時,我還是會簽採購單,如果Boss你反對,那大概就是我離開之時。

繁體簡體--(58)繁體簡體用詞對照表--名詞--急救

急救
大陸用詞    簡體字    台灣用詞
獻血      献血     捐血
巡診      巡诊     巡回醫療
口腔體溫表   口腔体温表  體溫計
白衣戰士    白衣战士   白衣天使,護士
救命電話    救命电话   生命線

利用單一事件處理程序(Event Handler)來減少程式碼及提高...生產力吧


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Code...
End Sub


  以上就是今天的主角「Event Handler」,Event Handler簡單說,就是將物件事件與事件處理程序做關連,以上例來說,我們的物件是「Button1」,物件事件是「Button1.Click」(最後的地方),事件處理程序是「Button1_Click()」。其中的重點其實在「Handles」身上,Handles
,注意看這個單子,有加「s」哦,也就是說,這個Event Handler本身不只可以處理單一個事件,也可以同事處理多個物件的事件。

  我舉個簡單的例子,我們在寫資料庫程式時,Select自為一組,Insert、Update、Delete這三個通常也自成一組,但我們一般的寫法就是:


'Insert Button
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Insert Code...
End Sub

'Update Button
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
'Update Code...
End Sub

'Delete Button
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
'Delete Code...
End Sub


  看起來沒什麼問題,執行起來也會很順暢。但其實這三個功能的程式,我們常常是寫在一起的,很少寫了Insert確不寫Update和Delete程式碼,所以我們接下來要簡化程式碼而且還可以集中管理的方便性。

  第一件事,我們要使三個Button都使用同一個Event Handler,所以我們將上面三段合成一段:


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
'Code...
End Sub


  注意最後「Handles Button1.Click, Button2.Click, Button3.Click」,將三個Button物件Click事件與Button1_Click做關連,也就是說Button1, Button2, Button3的Click都交給Button1_Click處理常式來處理。這樣設定之後,接下來的問題只有一個,就是說,我們要如何分辨「我是誰?Who am i?」

  因為現在三個Button都關連同一事件處理程序,如不能分辦是「誰」,那程式怎麼知道我們要處理Button1的Click程式碼還是Button2或Button3的Click程式碼?這個Who am i的遊戲解法有二。

方法一:使用Button的Command事件



  在你將Button物件拉進ASP.NET網頁後,請在屬性視窗找一個「CommandName」的屬性,這個屬性能讓我們為Button物件進行命令關聯,我們進行以下設定:

  Button1 → CommandName → 新增
  Button2 → CommandName → 修改
  Button3 → CommandName → 刪除

  經過CommandName的設定後,我們就能在Button1_Click進行以下的處理:


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
  'CommandName Sample Code...
  'CType將sender轉換型別為Button,然後取得CommandName的值來比較
If CType(sender, Button).CommandName = "新增" Then
'Insert Code
ElseIf CType(sender, Button).CommandName = "修改" Then
'Update Code
ElseIf CType(sender, Button).CommandName = "刪除" Then
'Delete Code
End If
End Sub


  這樣的程式碼有沒有比每一個Button單獨一個事件處理程序來的好。但這樣的步驟還是太麻煩,因為還需要先設定每一Button的CommandName,然後在程式中還再透過CType()來轉換型別後才能取得CommandName的值。其實還有更快更簡便的方法,就是直接使用Sender.Text屬性。

方法二:使用Sender.Text加Select Case

  *不用設定CommandName


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
  'Sender.Text Sample Code...
  'Sender.Text取得傳入Button物件的Text屬性值
Select Case sender.text
Case "新增"
'Insert Code
Case "修改"
'Update Code
Case "刪除"
'Delete Code
End Select
End Sub


  程式碼就這樣,沒了,簡單吧!我們直接對sender.text做Select Case動作,而sender.text是直接取得Button(1-3).Text的屬性值。這樣的程式碼連CommandName都不用設定,而是直接判斷Button(1-3).Text的屬性值,然後依Button(1-3).Text的不同撰寫處理程式。

  由以上範例我們可以看出,一是透過簡單共用事件處理程序,我們就可以減少不少的程式碼,二是集中管理相同目標、目的的程式碼。

範例:MultiView使用單一事件管理程序來切換View


  我們先在畫面上拉一個MultiView控制項,然後在MultiView控制項裡拉三個View控制項,三個View控制項裡各打上一些文字,

  MultiView
    → View1 → "This is View 1"
    → View2 → "This is View 2"
    → View3 → "This is View 3"

  然後在MultiView下方拉三個LinkButton控制項,LinkButton文字設定為View1、View2、View3,

  LinkButton1.Text = View1
  LinkButton2.Text = View2
  LinkButton3.Text = View3

  我們利用這三個LinkButton來切換MultiView裡的View。原始方法就是在每一個LinkButton的Click事件中寫程式。但我們既然學了好用的單一事件處理程序,讓我們來試試看:


Protected Sub lb1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lb1.Click, lb2.Click, lb2.Click
'mv代表MultiView、lb代表LinkButton
'ActiveViewIndex用來設定所要顯示的View控制項,0代表第一個View…
Select Case sender.text
Case "View1"
mv.ActiveViewIndex = 0
Case "View2"
mv.ActiveViewIndex = 1
Case "View3"
mv.ActiveViewIndex = 2
End Select
End Sub


  這樣的Code看起來是不是很舒服,我們把有相同目的、相同目標的程式碼集中起來,也減少了許多頁面裡的Code,這樣不僅僅是對Coding人員有好處,對執行效率也會能有所提升。想想,如果一個大專案裡,共有100萬行程式碼,如果透這像這樣的小技巧,減為95萬行好了,能減少5%的程式確能執行一樣的效果。

  如果沒有感覺,一樣的工作1000萬行減為950萬行,你如果可以化身為Server,請選擇?

  ps. Windows 95作業系統有高達一千一百萬行程式。

繁體簡體--(57)繁體簡體用詞對照表--名詞--醫療術語

醫療術語
大陸用詞    簡體字    台灣用詞
男科      男科     治療男性生理疾病
男絕      男绝     男性結紮
人流      人流     墮胎
瘋牛病     疯牛病    狂牛症
前列腺     前列腺    攝護腺
輸液      输液     打點滴
抗力      抗力     抵抗力
甲/乙/丙肝   甲/乙/丙肝  A/B/C肝
挫瘡      挫疮     青春痘
創面      创面     傷口
創可貼     创可贴    OK繃
中成藥     成药     科學中藥
乙腦      乙脑     日本腦炎
個體醫     个体医    私人診所
流感      流感     流行性感冒
胸透      胸透     胸部透視
生成      生成     產生
上感      上感     上呼吸道感染
骨質增生    骨质增生   長骨刺
提取      提取     萃取
綜合症     综合症    症候群
高脂血     高脂血    高血脂
黃麴黴素    黄曲霉素   黃麴毒素
改善微循環   改善微循环  改善體內循環
理療      理疗     物理治療
電針療法    电针疗法   電療
第一醫學    第一医学   預防醫學
第二醫學    第二医学   臨床醫學
第三醫學    第三医学   複健醫學
第四醫學    第四医学   智力醫學
慈悲殺人    慈悲杀人   安樂死
優死      优死     安樂死
病原攜帶者   病原携带者  帶原者
多動症兒童   多动症儿童  過動兒
肝數值     肝数值    肝指數
家庭病床    家庭病床   居家護理
計算機大夫   计算器大夫  電腦診斷
廚房病     厨房病    吸入過多油煙所罹患的病
電視病     电视病    電視症候群
甲亢      甲亢     甲狀腺亢進
白細胞     白细胞    白血球
紅細胞     红细胞    紅血球
機體      机体     身體
中滿      中满     胸腹鬱脹
月經不調    月经不调   月經失調
閉經、絕經   闭经、绝经  無月經症
攝入量     摄入量    攝取量
毛細血管    毛细血管   微血管
紫癜      紫癜     紫斑
低燒      低烧     輕微發燒
瘰癧      瘰疬     鼠瘡
活血      活血     活血化瘀
點名手術    点名手术   指定醫生
養陰      养阴     滋陰
瘙癢      瘙痒     搔癢
心律失常    心律失常   心律不整
通腑利腸    通腑利肠   健胃整腸
脂溢性     脂溢性    脂漏性
大腸腺瘤    大肠腺瘤   大腸癌
子宮筋腫    子宫筋肿   子宮肌瘤

繁體簡體--(56)繁體簡體用詞對照表--名詞--醫療

醫療
大陸用詞    簡體字    台灣用詞
保健箱     保健箱    急救箱
軟醫學     软医学    中醫學
甘油三脂    甘油三脂   三酸甘油脂
複合糖     复合糖    複合醣
防止      防止     預防
長生體     长生体    發育
木糖醇     木糖醇    代糖

LINQ之延遲查詢與立即查詢

LINQ全稱是「Language-Integrated Query」。如果你想要使用或學習LINQ,那你必須安裝.NET Framework 3.5以上,才有辦法使用。

在使用LINQ時有一地方需要特別小心,就是LINQ在「反應」的時間點。LINQ本身預設為「延遲查詢」。什麼是延遲查詢?我這樣說好了,我們寫程式,預設是從上到下,從右到左執行,也就是執行一行就有一行的效果,例如:「Dim intStu = New Integer() {...} 」當complier執行到這一行,這一行中的intStu馬上就產生為數值陣列,這樣的執行模式稱「立即執行」。

但延遲查詢剛好相反,也就是說,就算complier已經執行過這一段程式,但在沒有其他程式使用到之前,它不會產生任何效果

以下我們來看實際的例子,Default.asp中Page_Load事件:

'Implicit
Dim intStu = New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

'LINQ,選擇「偶數」
Dim even = From n In intStu Where n Mod 2 = 0 Select n

Response.Write("LINQ 第一次:<br />")
For Each n In even
 Response.Write(n & "<br />")
Next

'改變陣列值
intStu(0) = 200

Response.Write("LINQ 第二次:<br />")
For Each n In even
 Response.Write(n & "<br />")
Next


執行後的結果會如下:

LINQ 第一次:
2
4
6
8
10
LINQ 第二次:
200 '這裡是重點
2
4
6
8
10


請注意第二次中的第一個結果。我們在執行完LINQ後,程式並沒有馬上產生作用,而是等到有人使用時(For Each n In even),才會去執行。所以在我把陣列的值(intStu(0))做改變後,再去執行第二次的For Each語法時,第二次的For Each會去觸發第二次的LINQ查詢,而LINQ再去讀取已經被修改過的陣列,所以造成第二次第一筆值為200

那如果我今天是希望LINQ查詢的結果是固定的,也就是說,不管我事後如何修改陣列值,事後的For Each結果都是一樣的,那你就必須讓LINQ查詢當下要立即執行。立即執行LINQ也很簡單,可以使用ToArray()ToList()方法來強制立即執行。

'LINQ,選擇「偶數」
'使用ToArray或ToList讓LINQ立即執行
'Dim even = (From n In intStu Where n Mod 2 = 0 Select n).ToList
Dim even = (From n In intStu Where n Mod 2 = 0 Select n).ToArray


執行結果,你會看到第一次與第二次完全一模一樣,第二次不再受陣列改變的影響,也就是說,使用使用ToArray或ToList方法後,LINQ語法已經立即產生作用,而第一次與第二次For Each只是將even變數值讀出,而不是去觸發LINQ查詢。

這一點差異是我們在使用LINQ時要小心的地方,不然程式怎麼看都對,邏輯上下右左也查不出所以然,為什麼執行出來的結果永遠不是我們想要的,記得「LINQ預設是延遲執行」。

繁體簡體--(55)繁體簡體用詞對照表--名詞--氣候

氣候
大陸用詞    簡體字    台灣用詞
雨量大的暴雨  雨量大的暴雨 豪雨
雷陣雨     雷阵雨    西北雨
一級風     一级风    軟風
二級風     二级风    輕風
三級風     三级风    微風
四級風     四级风    和風
五級風     五级风    清風
六級風     六级风    強風
七級風     七级风    疾風
八級風     八级风    大風
九級風     九级风    烈風
十級風     十级风    暴風
十一級風    十一级风   狂風
十二級風    十二级风   颶風
大氣污染    大气污染   空氣污染

繁體簡體--(54)繁體簡體用詞對照表--文--新聞

新聞
大陸用詞    簡體字    台灣用詞
新聞鼻     新闻鼻    新聞事件的敏感度
新聞眼     新闻眼    新聞事件的獨特眼光
漢語拼音    汉语拼音   羅馬拼音
大鍋水     大锅水    公家負擔水費費用
理想國     理想国    鳥托邦
議會民主制   议会民主制  內閣制
少犯      少犯     少年犯
沸點新聞    沸点新闻   焦點新聞
歐共體     欧共体    歐洲共同市場
朋客      朋客     龐克族
詐騙集團    诈骗集团   詐騙集團、金光黨
糾集同夥    纠集同伙   同夥
犯罪團夥    犯罪团伙   幫派
冒尖      冒尖     突出、頂尖
冒富      冒富     暴發戶
挑頭      挑头     起義者
黑片      黑片     違法錄影帶
慣偷      惯偷     慣竊
製黃      制黄     製作色情產品的行為
釘子戶     钉子户    指頑固無法商量的人
勞改      劳改     勞動改造
峰會      峰会     高峰會
可卡因     可卡因    古柯鹼
四號客     四号客    吸食海洛英的人
冰毒(脫氧麻黃素) 冰毒(脱氧麻黄素) 安非他命
團夥      团伙     犯罪集團
騙奸      骗奸     誘姦
發案率     发案率    犯罪率
車盜      车盗     專門在車上盜取物品的竊賊
販私      贩私     販賣走私物品
廣肆      广肆     大肆
票提      票提     以拘票拘提犯案者
鐵桿兒綠    铁杆儿绿   深綠
瘋狂賭博    疯狂赌博   豪賭
民意所向    民意所向   民意所趨
海灣      海湾     波斯灣
大鍋      大锅     小耳朵
打非      打非     打擊犯罪
三胞      三胞     港澳、台灣、海外僑胞
下訪      下访     走訪基層
期發量     期发量    印刷量
硬新聞     硬新闻    題材、內容嚴肅的新聞
信訪      信访     寫陳情信

繁體簡體--(53)繁體簡體用詞對照表--文--英文

英文
大陸用詞    簡體字    台灣用詞
主語      主语     主詞
賓語      宾语     受詞
定語      定语     修飾語
比較狀語從句  比较状语从句 比較副詞子句
條件狀語從句  条件状语从句 條件副詞子句
實義賓語    实义宾语   表意受詞
不定式     不定式    不定詞
從句      从句     從屬子句
單數形式    单数形式   單數
複合賓語    复合宾语   複合受詞
複數形式    复数形式   複數
一般時態    一般时态   簡單進行式
一般過去時   一般过去时  簡單過去式
一般現在時   一般现在时  簡單現在式
將來進行時   将来进行时  未來進行式
將來完成時   将来完成时  未來完成式
將來完成進行時 将来完成进行时 未來完成進行式
一般現在時   一般现在时  現在簡單式
現在進行時   现在进行时  現在進行式
現在完成進行時 现在完成进行时 現在完成進行式
現在完成時   现在完成时  現在完成式
過去完成時   过去完成时  過去完成式
過去將會完成進行時 过去将会完成进行时 過去未來完成進行式
過去將來完成時 过去将来完成时 過去未來完成時
過去時     过去时    過去式
一般過去時   一般过去时  一般過去式
一般過去將來時 一般过去将来时 一般過去未來式
一般將來時   一般将来时   一般未來式
一般現在時   一般现在时   一般現在式
虛擬語氣    虚拟语气   假設語氣
間接引語    间接引语   間接從句
間接賓語    间接宾语   間接受詞
否定詞     否定词    否定語詞
介詞      介词     介係詞
合成詞     合成词    複合詞
連詞      连词     連接詞
從屬連詞    从属连词   從屬連接詞

繁體簡體--(52)繁體簡體用詞對照表--外來語--國名

國名
大陸用詞    簡體字    台灣用詞
塞浦路斯    塞浦路斯   模里西斯
毛里求斯    毛里求斯   模里西斯
西薩摩西    西萨摩西   薩摩亞
大阿拉伯利比亞人民社會主義民眾國 大阿拉伯利比亚人民社会主义民众国 利比亞阿拉伯人民社會主義群眾國
利比里亞    利比里亚   賴比瑞亞
厄瓜多爾共和國 厄瓜多尔共和国 厄瓜多共和國
乍得      乍得     查德
瑙魯      瑙鲁     諾魯
格林納遠    格林纳远   格瑞那達
博耶瓦納    博耶瓦讷   波札那
圭亞那     圭亚那    蓋亞那
塞舌耳     塞舌尔    塞昔耳
巴布亞新幾內亞獨立國 巴布亚新几内亚独立国 巴布亞紐幾內亞
肯尼亞     肯尼亚    肯亞
扎伊爾共和國  扎伊尔共和国 薩伊
突尼斯     突尼斯    突尼西亞
大韓民國、韓國、南朝鮮 大韩民国、韩国、南朝鲜 大韓民國、南韓
朝鮮      朝鲜     北韓
柬埔寨     柬埔寨    柬埔寨、高棉
文萊達魯薩蘭國 文莱达鲁萨兰国 汶萊
老撾      老挝     寮國
特立尼遠和多巴哥 特立尼远和多巴哥 千里遠托貝哥
新澤西     新泽西    紐澤西
新西蘭     新西兰    紐西蘭
尼日利亞    尼日利亚   奈及利亞
莫桑比克    莫桑比克   莫三比克
危地馬拉    危地马拉   瓜地馬拉
湯加      汤加     東加
巴巴多斯    巴巴多斯   巴貝多
卡塔爾     卡塔尔    卡達
波恩      波恩     波昂
幾內亞比紹   几内亚比绍  幾內亞比索
斯威士蘭    斯威士兰   史瓦濟蘭
萊索托     莱索托    賴索托
馬拉維     马拉维    馬拉威
吉布提     吉布提    吉布地
圖瓦盧     图瓦卢    吐瓦魯
津巴布韋    津巴布韦   辛巴威
阿拉伯聯合酋長國 阿拉伯联合酋长国 阿位伯聯合大公國
蘇里南     苏里南    蘇利南
贊比亞     赞比亚    尚比亞
伯利茲     伯利兹    貝里斯
坦桑尼亞    坦桑尼亚   坦尚尼亞
毛里塔尼亞   毛里塔尼亚  芧利塔尼亞
岡比亞     冈比亚    甘比亞
厄瓜多爾    厄瓜多尔   厄瓜多
阿塞拜疆    阿塞拜疆   亞塞拜然
突尼斯共和國  突尼斯共和国 突尼西亞共和國
阿曼蘇丹國   阿曼苏丹国  阿曼王國
馬爾代夫共和國 马尔代夫共和国 馬爾地夫共和國
瓦努阿圖共和國 瓦努阿图共和国 萬那杜共和國
沙特阿拉伯   沙特阿拉伯  沙烏地阿拉伯
埃塞俄比亞   埃塞俄比亚  衣索比亞
帕勞      帕劳     帛琉
格魯吉亞    格鲁吉亚   喬治亞
加納共和國   加纳共和国  迦納共和國
布隆迪共和國  布隆迪共和国 蒲隆地共和國

繁體簡體--(51)繁體簡體用詞對照表--外來語--地名

地名
大陸用詞    簡體字    台灣用詞
布里季敦    布里奇敦   橋市
也門民主人民共和國 也门民主人民共和国 葉門人民民主共和國
弗里敦     弗里敦    自由城
塞拉里昂    塞拉利昂   獅子山
戛纳      戛纳     坎城
悉尼      悉尼     雪梨
華盛頓     华盛顿    華府
馬六甲海峽   马六甲海峡  麻六甲海峽
宿務      宿务     (菲律賓)宿霧
都靈      都灵     杜林
迪拜      迪拜     杜拜
硅谷      硅谷     矽谷

Visual Studio 2008使IntelliSense變透明的方法

  我們在使用Visual Studio 2008最方便的就是IntelliSense功能,例如在寫資料庫程式時,輸入「conn.」當輸入完「.(點)」時,Visual Studio 2008會自動列出相關成員清單以供選擇。但這份清單會遮蔽到下面的程式碼,如果程式寫多了,常會參考上下的程式碼時,這份清單就變的不是那麼的方便。

  其實有個小技術,就是在你想查看IntelliSense遮蔽下面的程式碼時,可以按Ctrl鍵,這時IntelliSense就會變得非常透明,而且有點圖層的觀念,變到下層去。

ASP.NET控制項設定寬(Width)與高(Height)

  假設我們有個需求,需要由程式幫忙設定控制項的Width與Height屬性,那你可能會很直覺的設寫出以下段程式碼:

  Default.aspx,新增一個TextBox控制項,然後在Page_Load撰寫以下程式碼:


Me.TextBox1.Height = "200px"
Me.TextBox1.Width = "100%"


  然後執行瀏覽器檢視,你會發現會產生「System.FormatException: 輸入字串格式不正確。
」的錯誤。這是因為在ASP.NET中Height和Width的屬性型別都是WebControl.Unit,所以我們設定時必須寫成:


控制項.[Width | Height] = Unit.[Pixel | Percentage](n)


  所以在ASP.NET要設定控制項的Width或Height要改寫成:


Me.TextBox1.Height = Unit.Pixel(20)
Me.TextBox1.Width = Unit.Percentage(100)

繁體簡體--(50)繁體簡體用詞對照表--文--機構

機構
大陸用詞    簡體字    台灣用詞
海洋事務管理處 海洋事务管理处 海事辦事處
防疫署     防疫署    衛生署
東盟      东盟     東協
人大代表    人大代表   人民大會代表
人大常委會   人大常委会  全國人民代表大會常務委員會
收轉台     收转台    廣播台
少管所     少管所    少年觀護所
人代會     人代会    人民代表會議
托老所     托老所    養老院
市政協     市政协    市政治協商會議
公檢法     公检法    公安、檢查、司法合稱
公安局     公安局    警察局
居委會     居委会    居民委員會
房管局     房管局    房屋管理處
計生辦     计生办    計畫生育辦公室
文管會     文管会    文物管理委員會
文聯      文联     文學藝術聯合會
化工部     化工部    化學工業部
公安部隊    公安部队   大陸武裝軍隊
差館      差馆     警察局
郵電所     邮电所    郵局
旅遊局     旅游局    觀光局
方案起草委員會 方案起草委员会 草委會
地方檢察署   地方检察署  地檢署
海關郵政部門  海关邮政部门 關郵
單位      单位     組織、部門、機關
中央台     中央台    中央人民廣播電台

88水災:你祈福,我捐錢活動

募款活動網址:http://wwhlove88.pixnet.net/blog/post/126264

今天在網路上看到一則「你祈福,我捐錢」的活動, 活動是白木屋所舉辦。只要在網站上撰寫30字以上對88受災戶的祈福文,白木屋就捐NT$5元給紅十字會。

活動時間:2009/8/21 24:00截止

----------------------------------------------

不要再說你沒錢了,留個言就可以發揮愛心了。

ASP.NET中一些JavaScript的使用技巧

範例一:使用javascript來傳送資料



  default.aspx,拉一個HTML的Input(Button)控制項,在最後面的地方加上「runat="server"」,在「runat="server"」後面新增onclick事件:

<input id="Button1" type="button" value="button" runat="server" onclick ="javascript:window.location.href='result.aspx?result='+window.confirm('True or Flase')"/>


  我們寫的javascript很簡單,使用者點擊button後,跳出一個確認視窗,然後將使用者選擇的值傳給result.aspx。重點在如果使用?result='…'的方式來傳送你的資料。

  result.aspx,在Page_Load新增以下程式碼:

Dim ret As String
ret = Request("result")
If ret <> "" Then
Response.Write(ret)
End If


  將default.aspx中javascript傳過來的值顯示出來。

範例二,使用Attributes屬性,動態新增javascript程式碼


  我們修改Default.aspx的內容,新增一個HTML的Input(Text)在Input(Button)之前,然後將Input(Button)裡的onclick事件刪除。然後在Default.aspx.vb中Page_Load中新增以下程式碼:


Dim strJS As String
strJS = "javascript:"
strJS += "if (Text1.value == '')"
strJS += "window.location.href='result.aspx?result='+window.confirm('輸入值空白,傳送True或Flase');"
strJS += "if (Text1.value != '')"
strJS += "window.location.href='result.aspx?result='+Text1.value;"

Me.Button1.Attributes("onclick") = strJS


  注意,我是透過Attributes新增onclick是事件到Button1控制項中。那透過控制項.Attributes()來新增事件有什麼好處呢?如果你寫過javascript,我想大約都是採用範例一的方法,直接在網頁裡寫javascript程式碼,但這樣的程式碼是死的,但透過Attributes後,可以讓我們的程式碼較有彈性。

  在上面的程式碼中有一段「if (Text1.value != '')」,主要是判斷Text1控制項的值是否為空白,再來決定傳送的值。而重點是「Text1」這個名稱,Text1是ASP.NET網頁的控制項Client ID,而非Web From中的物件名稱,在一些情況下,在伺服器端執行的控制項不見得在Client端會採用一樣的名稱(雖然大部分是會一樣)。這也就是我們使用Attributes來動態建構JavaScript的原因之一。所以如果JavaScript中有參考到任何一個控制項,最好都使用Attributes屬性來建構。


'先修改Text1,加上runat="server"屬性
Dim strJS As String
strJS = "javascript:"
'取得Text1控制項ClientID
strJS += "if (" & Text1.ClientID & ".value == '')"
strJS += "window.location.href='result.aspx?result='+window.confirm('輸入值空白,傳送True或Flase');"
strJS += "if (" & Text1.ClientID & ".value != '')"
strJS += "window.location.href='result.aspx?result='+Text1.value;"

Me.Button1.Attributes("onclick") = strJS


範例三:利用Literal動態安插JavaScript


  再來,我們示範使用Literal控制項與安插JavaScript。Literal可以讓我們在Web網頁上保留位置以顯示態文字,我們就是使用這樣的特性來動態的將JavaScript程式碼安插其中。

  Default.aspx,再畫面上各拉一個TextBox、Button、Literal、Label控制項。我們要透過Literal安插一段JavaScript來顯示目前的時間,而且每一秒更新一次,如果我們點擊Button時取得目前時間,然將時間顯示在Label上。












  然後在Page_Load事件撰寫以下程式碼:


Dim JavaScript As String
Dim ClockID As String

'取得在伺服器端執行的TextBox1 控制項 ClientID
ClockID = "form1." & Me.TextBox1.ClientID
'組出JavaScript
JavaScript += vbCrLf & ""
'將JavaScript安插入 Literal1
Me.Literal1.Text = JavaScript


  執行瀏覽器檢視,你就能看到時間在Text1顯示,且每秒更新一次。再看看原始碼,你就能看到Literal已經變成一段JavaScript:





  「form1.TextBox1.value」是這段程式的重點,然後在Button的Click事件新增:


Me.Label1.Text = Me.TextBox1.Text.ToString


  你可以點擊Button來取得即時的時間值。

  三個範例,你可以選擇直接在控制項寫JavaScript程式碼,也可以使用控制項.Attributes來動態新增,也能透過Literal來動態安插你所需要的程式碼。

繁體簡體--(49)繁體簡體用詞對照表--文--機構

機構
大陸用詞    簡體字    台灣用詞
海洋事務管理處 海洋事务管理处 海事辦事處
防疫署     防疫署    衛生署
東盟      东盟     東協
人大代表    人大代表   人民大會代表
人大常委會   人大常委会  全國人民代表大會常務委員會
收轉台     收转台    廣播台
少管所     少管所    少年觀護所
人代會     人代会    人民代表會議
托老所     托老所    養老院
市政協     市政协    市政治協商會議
公檢法     公检法    公安、檢查、司法合稱
公安局     公安局    警察局
居委會     居委会    居民委員會
房管局     房管局    房屋管理處
計生辦     计生办    計畫生育辦公室
文管會     文管会    文物管理委員會
文聯      文联     文學藝術聯合會
化工部     化工部    化學工業部
公安部隊    公安部队   大陸武裝軍隊
差館      差馆     警察局
郵電所     邮电所    郵局
旅遊局     旅游局    觀光局
方案起草委員會 方案起草委员会 草委會
地方檢察署   地方检察署  地檢署
海關郵政部門  海关邮政部门 關郵
單位      单位     組織、部門、機關
中央台     中央台    中央人民廣播電台

ASP.NET網頁中DoPostBack程式碼

  在ASP.NET網頁中,常會使用IsPostBack來判斷網頁是否回應用戶端回傳而被載入,或者是否為第一次被載入與存取;另外,我們也常會在一些控制項使用AutoPostBack的功能,當你使用這些功能時,會不會很好奇,它們是怎麼運作的。

  我們先在default.aspx接一個DropDownList控制項,然後啟用AutoPostBack。然後開啟網頁,查看原始碼:


<select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1">
<option value="1">1</option>
<option value="2">2</option>

</select>


  在select中被加入一段onchange事件,所有當你有選擇的動作時,會自動觸發javascript,我們來看網頁中被加入的javascript:


<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>


  __doPostBack的目的,在產生一個事件。當我們在使用Web控制項時,控制項都可以有自己的事件,例Button的Click、CheckBox的CheckedChanged、DropDownList的SelectedIndexChanged…等。這些事都是使用者在網頁上做了某些事情時所產生的動作。可是我們並沒有在網頁上寫任何程式碼來補抓這些事件,因此事件就算產生,也不會被處理。但這些事件之所以能Submit到後端交由ASP.NET來處理,都是藉由ASP.NET產生Web From時加入的Javascript程式碼「__doPostBack函式」來產生。

利用TreeView與XML建構多層次選單

  TreeView是一個很方便建構選擇系統的控制項,除非你的選單不大也不複雜,TreeView預設的使用方法,可以讓你很快速建構起一個選單。但如果要有進階一點的效果,那就要從程式碼下手。我們先在Default.aspx拉一個TreeView控制項,然後請在相同目錄下新增一個xmlMenu.txt檔案,內容如下:


<選單>
<功能選單>
<資料管理>
<新增資料>
<銷貨>AddData1.aspx</銷貨>
<庫存>AddData2.aspx</庫存>
<客戶>AddData3.aspx</客戶>
</新增資料>
<修改資料>
</修改資料>
<刪除資料>
</刪除資料>
</資料管理>
</功能選單>
<維護選單>
<系統維護>
<備份資料>
</備份資料>
<還原資料>
</還原資料>
<驗證資料>
</驗證資料>
</系統維護>
</維護選單>
<相關網站>
<Yahoo>http://tw.yahoo.com</Yahoo>
<Google>http://www.google.com.tw</Google>
<金剛.Bruce>http://kkbruce.blogspot.com/</金剛.Bruce>
</相關網站>
</選單>

  這個檔案的使用,我等一下再說明。

  打開Default.aspx.vb,先匯入

Imports System.IO
Imports System.Xml


  然後在Page_Load事件,寫下以下程式碼:


'建立XML格式的選單用
Dim XMLmenu As String = ""
Dim file As File
Dim path As String

     '如果xmlMenu.txt讀取失敗,出現預設的選單
XMLmenu += "<選單>"
XMLmenu += "<功能選單>"
XMLmenu += " <資料管理>"
XMLmenu += " <新增資料>"
XMLmenu += " </新增資料>"
XMLmenu += " <修改資料>"
XMLmenu += " </修改資料>"
XMLmenu += " <刪除資料>"
XMLmenu += " </刪除資料>"
XMLmenu += " </資料管理>"
XMLmenu += "</功能選單>"
XMLmenu += "<維護選單>"
XMLmenu += " <系統維護>"
XMLmenu += " <備份資料>"
XMLmenu += " </備份資料>"
XMLmenu += " <還原資料>"
XMLmenu += " </還原資料>"
XMLmenu += " <驗證資料>"
XMLmenu += " </驗證資料>"
XMLmenu += " </系統維護>"
XMLmenu += "</維護選單>"
XMLmenu += "</選單>"

     '設定xmlMenu.txt路徑
path = Request.PhysicalApplicationPath & "xmlMenu.txt"
'xmlMenu.txt檔案存在,從檔案讀取XML
If file.Exists(path) Then
Dim fileStream As FileStream = file.OpenRead(path)
Dim StreamReader As New StreamReader(fileStream, System.Text.Encoding.Default)
       '將xmlMenu.txt內容讀入XMLmenu變數中
XMLmenu = StreamReader.ReadToEnd
fileStream.Close()
StreamReader.Close()
End If

'建立選單
Call BuildTreeView(XMLmenu)


  這裡我們做幾件事,一是預設一組XML,以防xmlMenu.txt讀取有問題時,也能正常顯示選單。二是取得xmlMenu.txt檔案路徑,然後判斷路徑的檔案是否存在,是的話就讀取,不存在的話,就使用預設XMLmenu變數內容。最後將XMLmenu變數傳入Function BuildTreeView。


  '利用XML建立 TreeView 選單
Function BuildTreeView(ByVal XMLmenu As String) As TreeNode
'xml選單資料
Dim xmlPaser As New XmlDocument()
'Base XmlNode
Dim Node As XmlNode
Dim i As Integer

'取得XML選單
xmlPaser.LoadXml(XMLmenu)

     '從<選單>開始
Node = xmlPaser.SelectSingleNode("選單")
For i = 0 To Node.ChildNodes.Count - 1
       '先呼叫第二個Function MakeChildNodes
'將主Node加入TreeView
Me.TreeView1.Nodes.Add(MakeChildNodes(Node.ChildNodes(i)))
Next
End Function


  BuildTreeView做的事很簡單,一是透過xmlPaser.LoadXML(XMLmenu)幫我們把XMLMenu變數內容讀取出來,然後將讀取出來的內容整理成正真的XML格式資料;二是透過xmlPaser.SelectSingleNode("選單")指定那裡是「根」,然後一層一層往下讀,再將Node.ChildNodes(i)透過MakeChildNodes函數將Xml Node轉成 TreeView Node。最後將資料加入TreeView1.Nodes中即可。


  '將 Xml Node轉成 TreeView Node
Function MakeChildNodes(ByVal XmlNode As XmlNode) As TreeNode
Dim Node As New TreeNode()
Dim i As Integer

Node.Text = XmlNode.Name
'當只有一個子節點時(可能是網址)
If XmlNode.ChildNodes.Count = 1 Then
'目前XmlNode的型別是否等於XmlNodeType.Text(文字內容)
If XmlNode.ChildNodes(0).NodeType = XmlNodeType.Text Then
'網址,取得節點文字當作URL
Node.NavigateUrl = XmlNode.InnerText
End If
End If
'往下跑每一個節點
'若子節點是文字模式,則不跑,因為是URL
For i = 0 To XmlNode.ChildNodes.Count - 1
If XmlNode.ChildNodes(i).NodeType <> XmlNodeType.Text Then
Node.ChildNodes.Add(MakeChildNodes(XmlNode.ChildNodes(i)))
End If
Next
     '傳回TreeView Node
MakeChildNodes = Node
End Function


  這樣你就可以透過xmlMenu.txt檔案來管理你的選單。你可以先測試把xmlMenu.txt修改成其他檔名,那畫面就會跑出預設XMLmenu的內容。

  這支程式還有其他進步的地方,例如我們讀取xmlMenu.txt的這一段:


     '設定xmlMenu.txt路徑
path = Request.PhysicalApplicationPath & "xmlMenu.txt"
'xmlMenu.txt檔案存在,從檔案讀取XML
If file.Exists(path) Then
Dim fileStream As FileStream = file.OpenRead(path)
Dim StreamReader As New StreamReader(fileStream, System.Text.Encoding.Default)
       '將xmlMenu.txt內容讀入XMLmenu變數中
XMLmenu = StreamReader.ReadToEnd
fileStream.Close()
StreamReader.Close()
End If


  你可以修改成,管理者讀取xmlMenuManager.txt,一般使用者讀取xmlMenuUser.txt;或是不同部門需要不同的內容,你只要依部門建議所需要xmlMenuSales.txt…,在寫個判斷程式,這樣就是一個簡單的權限管理方法,不同的人、不同的部門、不同的權限看到不同的東西。

  這方面就給各位去發揮了。

RE:良善的人

Dear Bruce :

今天我參加慈濟屏東林邊救災團...
慈濟中南部的師兄姐這幾天己全部出動,
也都累壞了,
現在換北部的師兄姐接力, 每天540人左右下去支援...昨天第一梯次1000人..
由於林邊災情慘重, 沒有住宿地點..每天當天來回輪梯次下去.
這要感謝高鐵對救災的支持, 免費提供位子給救災團體,
我們搭最早的班車下去, 到逹林邊10點左右, 即開始分隊展開作業...


今天到林邊鄉, 所看到的景象真的讓人心酸...
比起幾年前的汐止大淹水還嚴重,
到現在林邊鄉最熱鬧的中山路,仍然水淹及膝...
由8/8起算,今天己是第8天了, 泡水的物品,死魚都己開始腐壞發臭...
空氣中隨時飄過來那種腐臭酸壞的味道,
真難想像都8天了, 居然沒有一個像樣的救災程序和方法..
水退了的地方, 到處泥濘.災民將家中泡水的家具全往 "路上"丟,
到目前.清除的動作緩慢..馬不知在那裡..
甚至有一些家庭, 因人手不足, 仍然無法完全打掃,這也是我們慈濟人目前能做的..
協助災民將家中,泡水腐壞的家具清出來...
在林邊目前進駐的救災團體, 有基督教的青年會, 佛光會, 一貫道..還有一些不知道的團體.
還有它縣市支援的消防車.水車.
以及少量的陸戰隊在協助清理..但速度緩慢...
沒有一個統籌指揮的單位, 出來整合..前進指揮所,只能在那指揮交通..做管制..


各個團體完全是主動去協助災民....看到青年會的少年人, 都集中積水最深的中山路上,
協助搬運物品, 看來還是年輕人有活力..
我們慈濟北部師兄,昨天第一梯次人員下來,發現沒有山猫,
馬上回台北調集了五部連夜下來,協助清除路面污泥..但沒有政府派運土車輛配合, 真的力量還是有限
完全要自力安排救災...我們進駐的消防隊本身也是受災戶..忙著救災,自己都沒打掃.
大家都累壞了..上面又在怪他們沒做好災情回報..真是無奈..這些官老爺..


看到災民的無助...那種景像真是心酸..
你一定很難想像一個泡過水的彈簧床, 10個人抬不起來. 因為泡水壓與整個床都連在一起..
再加上吸水作用, 真的是一個很難忘的救災經驗..

當時我在想, 我們的政府在那裡....怎麼沒有馬上下令工兵部隊將潰堤的堤防用大型機具,
載砂石填回, 並調抽水車抽水...
接下來派出水車和山猫清街道污泥..先將污泥垃圾放在一塊空地, 後續再針對這個地區做整理,
讓民眾儘速脫離災難...
汐止淹水時,就是如此的作法,,,
怎會都第8天了, 還有這種仍然泡在水裡情形,林邊鄉現在簡直像個廢墟,
但人都還住在裡面..真擔心發生疫情...

今天內政部長廖了以,也到林邊看災, 結果被鄉民問, 你在這裡站8天看看..
結果廖部長馬上快閃....
真是無言...

林邊鄉政府救災都如此了,更別說其它受災更嚴重的地區, 原住民都開始展開自救了..
你可以看看原民台...原住民同胞都在喊, 政府在那裡....媽xxxxxxxxxx
說真的,目前各種物質己不缺, 缺的是統籌分配, 以及後續的災區重建計劃..
建議你和你 的朋友,,如要捐錢, 到不如把錢省下來, 組團到災區去幫忙...
相信你們會更有體會..

後續的重建工作才是漫長的開始, 須要更多的志工投入...歡樂你們的加入..
如真要捐錢, 捐物資, 真的不要一窩蜂的投到一個團體,或一個地方..
要對週遭的朋友募款,一定要將捐款人的資料做好建檔, 請受款單位開立捐款單據.
這是一定要做的...千萬不要省麻煩, 而忽略這個動作..
畢竟捐款還可以抵稅...這是捐款人的愛心, 所以流向要清楚, 以及他的權益..
現在台東的聖母醫院就非常缺物資,
你可以請朋友直接和聖母醫院連繫, http://www.st-mary.org.tw/
看他們缺什麼.你們再寄什麼物質, 這樣會比較好些,

當然你要介紹朋友將錢捐給慈善團體, 如我們慈濟, 建議要註明那些捐款人, 以及捐款的使用對象.
因為慈濟是專款專用...如,莫拉克風災專款..
這樣錢才真正用到須要的人身上....
接下來, 我們要協助蓋組合屋..以及其它重建工作...路還很長..

PS, 台灣人真的要團結......
林邊鄉看起來 ,如在兩個月內可以重建起來,
也無發生任何人員不適症狀.那真是阿彌陀佛,菩薩保佑

James

他,我身邊第三位良善的人。

繁體簡體--(48)繁體簡體用詞對照表--文--人物稱呼

人物稱呼
大陸用詞    簡體字    台灣用詞
熱戀中的情人  热恋中的情人 情人
新交的朋友   新交的朋友  新朋友
新老朋友    新老朋友   舊雨新知
愛人      爱人     對伴侶稱呼
三八紅旗手   三八红旗手  各行業傑出的女人
勞模      劳模     勞動模範
工作人員    工作人员   從業人員
榮譽軍人    荣誉军人   榮民
幹部      干部     公務員
慰問部隊    慰问部队   勞軍
國家幹部    国家干部   政府官員
高幹      高干     高級官員
基幹      基干     基層幹員
部隊首長    部队首长   長官
高山族     高山族    原住民
外賓      外宾     外國佳賓
八、九點鐘的太陽 八、九点钟的太阳 青少年
領導      领导     長官、上司、上級
主人公     主人公    主角
超常兒童    超常儿童   天才兒童
弱智兒童    弱智儿童   低能兒
低常兒童    低常儿童   智障兒
打工妹     打工妹    女工
笑星      笑星     諧星
人民陪審員   人民陪审员  陪審團
殘疾人     残疾人    殘障人士
二把手     二把手    二當家
二傳手     二传手    掮客
二流子     二流子    流氓
三陪      三陪     酒店、公關小姐
不正經的女人  不正经的女人 三八、阿花
公安、民警、員警 公安、民警、警察 警察
八旗子弟    八旗子弟   紈褲子弟
光蛋      光蛋     窮光蛋
武警      武警     憲兵
大款      大款     闊人
大腕      大腕     重量級人物
五保戶     五保户    無依無靠的老年人
回頭客     回头客    常客、老顧客
尖子      尖子     傑出人士
票販子     票贩子    黃牛
大腕演員    大腕演员   大牌明星
朋克      朋克     龐克族
郵遞員     邮递员    郵差
黑人      黑人     幽靈人口
勤雜人員    勤杂人员   清潔工、雜工
傻冒兒     傻冒儿    呆瓜
驢友      驴友     旅友、旅行者
毛腳女婿    毛脚女婿   準女婿
毛腳媳婦    毛脚媳妇   準媳婦
老太太     老太太    歐巴桑
老大爺     老大爷    歐吉桑
個子矮小的人  个子矮小的人 矮冬瓜
出租房屋的婦女 出租房屋的妇女 包租婆
房屋仲介人   房屋中介人  包租人
保安人員    保安人员   保全人員
笨蛋      笨蛋     菜鳥
管理倉庫的人  管理仓库的人 倉務員
心理承受能力弱的人 心理承受能力弱的人 草莓族
退休老人群   退休老人群  長青族
同事      同事     同仁、同事
闊佬      阔佬     大頭鬼
洋鬼子     洋鬼子    鬼佬
態度惡劣蠻橫的人 态度恶劣蛮横的人 惡漢
菲律賓女傭人  菲律宾女佣人 菲傭
商販      商贩     估客
單身漢     单身汉    光棍
番邦女     番邦女    外國女人
官職      官职     官守
遊客      游客     觀光客
老摳      老抠     吝嗇鬼
老姑娘     老姑娘    老姑婆
老兵      老兵     老芋伯
學徒工     学徒工    學徒
菸壇      烟坛     吸菸族
款爺      款爷     凱子
詐騙犯     诈骗犯    騙徒
測量設計師   测量设计师  測技師
中字輩     中字辈    中生代
特困戶     特困户    低收入戶
三門幹部    三门干部   新鮮人   喻家門、校門、機關門,缺乏實務經驗的幹部
三門學生    三门学生   富家子弟
傍肩      傍肩     情婦、二奶
捧爺      捧爷     狗腿
侃爺      侃爷     蓋仙

繁體簡體--(47)繁體簡體用詞對照表--文--民俗文化

民俗文化
大陸用詞    簡體字     台灣用詞
傳統風味    传统风味    古早味
三大國粹    三大国粹    京劇、國畫、中醫
民間工藝美術品 民间工艺美术品 民俗工藝品

如何開啟 Windows XP 中的自動登入

From:
http://support.microsoft.com/kb/315231/zh-tw

太常用了,雖然都已經快Windows 7的時代了。每次都要上網找一次,麻煩。


您可以使用「登錄編輯程式」新增您的登入資訊。如果要執行這項操作,請依照下列步驟執行:

1. 按一下 [開始],再按一下 [執行],輸入 regedit,然後按一下 [確定]。
2. 找出下列登錄機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
3. 使用您的帳戶名稱及密碼,按兩下 [DefaultUserName] 項目,輸入您的使用者名稱,再按一下 [確定]。
4. 按兩下 [DefaultPassword] 項目,在 [數值資料] 方塊下方輸入您的密碼,再按一下 [確定]。

如果沒有 [DefaultPassword] 值,請建立該值。如果要執行這項操作,請依照下列步驟執行:
1. 在「登錄編輯程式」中,按一下 [編輯],按一下 [新增],再按一下 [字串值]。
2. 鍵入 DefaultPassword 作為數值名稱,再按下 ENTER。
3. 按兩下新建立的機碼,然後在 [數值資料] 方塊中輸入您的密碼。
如果沒有指定 DefaultPassword 字串,Windows XP 會自動變更 AutoAdminLogon 登錄機碼的值,從 1 (真) 改成 0 (偽) 以關閉 AutoAdminLogon 功能。
5. 按兩下 [AutoAdminLogon] 項目,在 [數值資料] 方塊中輸入 1,再按一下 [確定]。

如果沒有 AutoAdminLogon 項目,請建立該項目。如果要執行這項操作,請依照下列步驟執行:
1. 在「登錄編輯程式」中,按一下 [編輯],按一下 [新增],再按一下 [字串值]。
2. 鍵入 AutoAdminLogon 作為數值名稱,再按下 ENTER。
3. 按兩下新建立的機碼,然後在 [數值資料] 方塊中輸入 1。
6. 結束 [登錄編輯程式]。
7. 按一下 [開始],按一下 [重新開機],再按一下 [確定]。

電腦重新開機而且 Windows XP 啟動之後,您就可以自動登入。

繁體簡體--(46)繁體簡體用詞對照表--商--求職

求職
大陸用詞    簡體字    台灣用詞
簡歷      简历     履歷表
應聘      应聘     面試
見工      见工     面試
回聘      回聘     重新雇用

良善的人

  真高興,身邊有良善的人。

  莫拉克,造成重創南台灣。身在北部的我們,在颱風假(星期五)及六、日都在家裡,連一步家門也沒有出去,知道外面的風、雨很大,一下是大雨聲,一下是大風聲,或者兩者一起來。剛開始,只是零星的一些災情,時間一分一秒的走,才知道,災情比想像中嚴重很多。

  雖然看著電視,看著記者口沫橫飛,知道了更嚴重、更緊急、更需要幫助的人,但心情的起浮總是不大,但看著電視報告可憐的故事,身邊總是有人紅著眼,然後她看看我,我看看她,我也只能笑笑的說:「好了,不要哭了。」她會回我:「他們好可憐。」

  她,我老婆,第一位良善的人。

  昨天,星期四晚上,琴姐有事找我幫忙,跑來宿舍找我,幫忙聊天之間,琴姐說她每天看電視每天哭,她說南部災情怎麼會那怎慘重,看到那些人她看一次哭一次。說著說著她就拿出一張單子,單子上寫了幾個人的名子和數字,琴姐說,她今天跑了幾個地方找到幾個朋友去「募款」希望能幫忙那些受災戶。

  看著那份名單,自己突然有點慚愧,自己長那麼大,還沒有為了什麼「受災戶」捐過款,總覺得錢到後來都是被「吃了」,對這種捐款的事,從來沒有什麼興趣。我對出力比較有興趣,幾年前有跟婆婆的教會去了一趟泰北,讓我心靈成長了許多,知道你能生長在一個有水、有電的地方,就已經是「幸福中的幸福」。後來,婆婆也來了,看到名單後馬上回家拿了一些錢說:「她也要捐」。

  琴姐還說,今天晚上她還想去「掃村」,去募更多的款。

  她,琴姐,樂的前保母,第二位良善的人。

  男人理性,女人感性。善事之前,不應該有理性或感性之分,低頭想想,只要我們有能力,都應該去幫助需要幫助的人,每個人出一點心力,不管用什麼方式,有錢人出錢,沒錢人出力,只要踏出第一步,相信我,你就會到不同的境界,當一位良善的人。

繁體簡體--(45)繁體簡體用詞對照表--商--經濟

經濟
大陸用詞    簡體字    台灣用詞
知識產權    知识产权   智慧財產權
運營      运营     營運
指標      指标     名額、須完成數量
工商稅     工商税    營業所得稅
產品稅     产品税    貨物稅
地稅      地税     地價稅
商品稅     商品税    貨品稅
工商聯     工商联    工商聯合會
中資      中资     中國大陸的投資資金
國資      国资     國有資產
中標      中标     得標
三企      三企     三資企業
民科企業    民科企业   民營科技企業
官辦企業    官办企业   國營企業
宏觀經濟    宏观经济   總體經濟
外匯儲備    外汇储备   外匯存底
人均收入    人均收入   國民所得
外匯牌價    外汇牌价   匯率
多維      多维     多元
外企      外企     外資企業、外商
特種股票    特种股票   B股
合資企業    合资企业   中外合資經營企業
限市      限市     限制市場銷售
外匯券     外汇券    人民幣外匯兌換券
行情      行情     市況
打經辦     打经办    打擊經濟犯罪辦公室
邊貿      边贸     邊境貿易
企業破產法   企业破产法  中華人民共和國企業破產法
企業法     企业法    中華人民共和國全民所有制工業企業法
三產      三产     服務業(第三產業)
三通      三通     台灣與大陸間的通郵、通航、通商
夕陽市場    夕阳市场   銀髮市場
全線飄紅    全线飘红   長紅
對外貿易局   对外贸易局  國貿局
銀行金庫    银行金库   行庫

Microsoft SQL Server 2008 Express安裝與簡介

一、序:種子


  2008年9月,微軟發表了SQL Server 2008,SQL Server 2008剛發表時不管是相關工具、說明文件都還很不充足,例如,如果你在一開始就安裝SQL Server 2008 Express,安裝後你會發現:「英雄無用武之地」。因為SQL Server 2005的管理工具根本無法連線到SQL Server 2008,管你是Windows驗證模式還是混合驗證模式。等到SQL Server 2008把管理工具從套件分離出來,又是一段時間之後的事。

  而到現在為止不過10月的時間,不論是工具、說明文件等,都已經相當完整,而且SQL Server 2008 Service Pack 1都已經出來了,這一次我想做一個細部的介紹,而不是下一步、下一步的介紹。

當種子掉到泥土裡


  台灣首富郭台銘說:「阿里山上的神木之所以大,四千年前當種子掉到泥土裡時就決定了」。

  我可以這種說:「資訊系統的種子在安裝時就決了日後的大小。」例如作業系統的磁碟分割。好的系統磁碟分割規劃,能讓你的系統在相同的硬體規格之下,不論在效能或穩定硬是比不好的磁碟分割要來的好。

  我模擬一個常有的情況,如果你只有一台伺服器,又要架網站、又要架FTP、又要架資料庫。

規劃一、
    C:\ 作業系統
    D:\ wwwroot、ftproot、dbroot

規劃二、
    C:\System
    D:\Temp
    E:\wwwroot
    F:\ftproot
    G:\dbroot
    H:\Logs

  系統磁碟分割(Partition)規劃,我可以依幾個大方向來談,一、如果預算充裕,最好是一台伺服器執行單一工作,這樣的整體系統在規劃時也比較簡單;差一點,或許可以使用現在很火紅的虛擬化技術,買幾台強大伺服器,然後導入虛擬化作業,這部份的磁碟分割規劃也簡單,反正這些虛擬化後的Server都可以用「檔案」的觀念來看,搬來搬去很方便,事後的新增硬碟也很簡易方便。

  那在預算有限,又需要在單一伺服器提供許多服務,又沒經費導虛擬化,那一開始的規劃就很重要。伺服器的硬體要好一點,RAID更是基本,而進系統前的Partition Plan就是重點。

  以上述範例,可以簡單看出,我將系統整個區分為:作業系統及程式區、伺服器服務區、暫存區、日誌區。

作業系統及程式區


  即一般Windows系統裡的「C:\」,這裡面只有作業系統及必要程式,我所謂必要程式例如「FTP Server」、「Database Server」…之類的程式。

伺服器服務區


  這台伺服器需要提供什麼服務,而且最好每個服務獨立一個Partition。一開始你就要事先預估一下每個服務內容所會佔用的空間容量大小來安排比例。我們假設上述是專門給User下載資料的FTP檔案伺服器,User透過Web網頁找到他們想要的資料,然後透過資料庫來管理下載的Link及做一些統計的動作。這樣分析下來,你會發現,wwwroot及dbroot都不用太大,而ftproot必須大一點,容量空間比例上我會這樣設計「wwwroot 20%、dbroot 20%、ftproot 60%」。

暫存區


  這是我多年的習慣,不管在個人電腦(PC)、筆記型電腦(NB)、伺服器(Server)都一樣,都會有一個獨立的暫存區。一般人不知道,我們作業系統從安裝完畢之後,接下來你不管是執行程式、新增/刪除程式、上網…都會產生一堆的暫存檔案,這些檔案大小不一且雜亂無章。很常聽到一句話:「奇怪,為什麼電腦用久了,就會越來越慢?」其實可以說是這堆暫存檔案是造成的原因之一,它們會使磁碟資料結構鬆散,增加磁碟搜尋資料、讀取資料的時間,造成系統效能的降低,而且預設還全部放在重要的「系統磁碟區C:\」之下。所以我非常建議各位,最好建一個暫存資料磁碟區,把系統預設的Temp目錄修改到這個Temp Disk,讓系統重要的C:\保持單純。

日誌區


  這部份有點像暫存區,但不同的是暫存區的資料沒有重要性,而日誌區的資料是有重點性。像我們伺服器所提供的每一項服務幾乎都有「日誌Log」的功能,Log這個東西也是多又雜,也是大小不一,也容易造成磁碟資料結構鬆散。全部暫存資料的缺點它都有,但有一點不同,它的資料是非常有價值的,尤其是在系統出問題時(或出問題前)。所以我也是建議建一個專門放各種日誌檔案的分割區,這樣也方便統一管理。

  我很少很少看到有人或有書在資料庫跟你談Partition,或許這不是資料庫管理人員的事,我們安裝時只是沒大腦的下一步下一步的按,其他什麼都不管,反正資料庫能Run,管他的!

  我們在安裝SQL Server 2008時,其實是有許多小細節的,如果你能注意到這些小細節且做微微調整,不但整個資料庫的效率馬上提升,而且更安全。例如在後面會介紹「伺服器組態」裡「定序」,很少人會去修改,也沒有去了解組態值的意義,但當你去做了解,而且做一些些小修改後,就能馬上提升資料庫效率,而且更重要的是,很多設定必須在安裝時就決定,而且決定了就不能更改,這就是種子。


二、安裝準備--作業系統環境


  以入門而言,Microsoft SQL Server 2008 Express(以下除非特別註明,不然2008 Express指的就是SQL Server 2008 Express版本)是個非常棒的學習平台,而且全面使用.Net Framework技術。

  在開始安裝2008 Express之前,我們必須先針對「作業系統」進行一些工作之後才能開始安裝。簡單的說,因為從SQL Server 2008版本開始(版本代號10.0)完全使用.NET Framework技術所開發而成的,所以你的作業系統必須先有.NET Framework執行環境才行。也因如此,所以之前2005 Express版本的SSMSE管理工具無法管理2008 Express版本。但如果你安裝完2008 Express版本及2008 Express SSMSE管理工具,是可以向下相容管理2005 Express。

關於Express的版本


SQL Server Express (x86 和 x64)


  單純只有SQL Server Express資料庫系統。與with Tools, with Advanced Services兩版本最大差異就是沒有SQL Server Management Studio 2008 Express(SSMSE)管理工具。也就是說,如果你的這台資料庫伺服器只需要讓遠端Client連接進來進行相關作業,根本不會有本機使用SSMSE管理工具的機會,那就很適合這個版本,小又單純。

SQL Server Express with Tools (x86 和 x64)


  這是2008 Express + SSMSE管理工具的版本。也就是你有需要在資料庫伺服器本機做一些組態設定…等相關操作,那你就安裝這個版本。

SQL Server Express with Advanced Services (x86 和 x64)


  除了SQL Server Express與SSMSE管理工具外,還提供「全文索引」及「報表伺服器」兩大功能。

  註:詳細SQL Server 2008版本功能差異::點擊這裡

  在2008 Express一推出時,只有with Tools及with Advanced Services 兩種選擇,沒有獨立的2008 Express及SSMSE工具可以下載。而我有些伺服器只需要安裝2008 Express,而Client只需要安裝SSMSE管理工具,相當不方便,不需要SSMSE的也要裝,不需要2008 Express也要裝。不過現在都相關工具都已經相當完整了,先考慮清楚你所要使用的版本,因為安裝的功能越多,消耗的系統資源就越多。後續我們會以「SQL Server Express with Advanced Services (x86 和 x64)」這個版本來做安裝前環境準備動作及安裝示範。

2008 Express的限制


  在開始進入安裝之前,我們要先了解2008 Express的一些限制。在2008 Express中除了進階軟體功能的限制外(例如:壓縮),另外更重要的就是硬體上的限制,在功能差異方面,請參考上一節的註解「SQL Server 2008版本功能差異」。而2008 Express硬體的限制延續2005 Express一樣的限制:

  • CPU數目:1
  • 記憶體上限:1 GB
  • 64位元支援:Windows on Windows (WOW)
  • 資料庫大小:4 GB

  CPU數目是說實際主機版上的實體數目,也就是2008 Express最多能使用一顆實體CPU來作業,但以現在隨便一顆實體CPU都是二核心、三核心、四核心…,這方面你到是不用擔心,而且如果這種多核心等級CPU還不夠你操的話,那你不太應該往下看了,太浪費你的時間了。記憶體上限的意思是說2008 Express最大只能使用1 GB的記憶體。老實說,我感覺Microsoft在這方面有點小氣了,我個人感覺2 GB是2008 Express比較實用的數字。其中比較要注意的是「資料庫大小」這一個項目,Express版本的4 GB限制是指「單一個DataBase檔案(*.mdf)」,例如我們常當成範例的Northwind.mdf(北風資料庫),最大只能成長到4 GB,在Express版本中的每個資料庫檔案大小都會有4 GB的限制,但是還是有破解的方法。

  Crack,破解嗎?沒有啦,是避開的方法,這是所有硬體限制裡可以「避」的部分,避的方法是:「多開幾個資料庫檔案(*.mdf)來避開這項限制」。如果你注意看,我寫的限制是「單一mdf檔案的大小」有限制,所以如果你預計你的資料庫大小會超過4 GB時,除了購買正式版外,在2008 Express上你可以多開幾個資料庫檔案避開這部分的限制,例如:products.mdf、members.mdf,但唯一麻煩可能是程式就要設計成「跨資料庫存取」的方式。

確認作業系統及硬體



支援的作業系統
  • Windows Server 2003 Service Pack 2
  • Windows Server 2008
  • Windows Vista
  • Windows XP Service Pack 2

32位元系統,硬體


  • CPU:備有 Intel 或相容 1GHz (或更快) 處理器 (建議使用 2 GHz 或更快,只支援單一處理器) 的電腦。
  • RAM:最少 512 MB RAM (建議 1 GB 或以上)。
  • Disk:1.9GB 可用硬碟空間。

64 位元系統,硬體


  • CPU:1.4 GHz 或更高等級處理器 (建議使用 2 GHz 或更快,只支援單一處理器)。
  • RAM:最少 512 MB RAM (建議 1 GB 或以上)。
  • Disk:1.9 GB 的可用硬碟空間。

環境準備



方法一:傳統安裝法

  什麼是傳統安裝法,簡單說,就是拿著DVD安裝,不然就是上Windows Download把所有必須的程式及套件下載回來安裝。

  前面說過,在開始安裝SQL Server Express之前,必須先準備好作業系統.NET Framework環境,所以我們必須先行下載以下套件(最好依順序安裝):

  • Microsoft .Net Framework 3.5 SP1:下載點(啟動載入器)、下載點(完整套件)
  • Windows Installer 4.5:下載點 (需重開機)
  • Windows PowerShell 1.0:
    x86 版 Windows XP Service Pack 2 的 Windows PowerShell 1.0:下載點
    x64 版 Windows XP Service Pack 2 的 Windows PowerShell 1.0:下載點
    x86 版 Windows Server 2003 Service Pack 1 的 Windows PowerShell 1.0:下載點
    x64 版 Windows Server 2003 的 Windows PowerShell 1.0:下載點
    Itanium 版 Windows Server 2003 Service Pack 1 的 Windows PowerShell 1.0:下載點
    x86 版 Windows Vista 的 Windows PowerShell 1.0:下載點
    x64 版 Windows Vista 的 Windows PowerShell 1.0:下載點

  要比較注意的只有PowerShell一項,請選擇正確的版本對應的PowerShell,進入下載面畫後,你可以依需求切換PowerShell的語系版本,也就是說,假設我不要使用繁體版本,我習慣看英文,那就可以選擇安裝英文版本的PowerShell,安裝之後,以後只要有關PowerShell的任何訊息都會以英文來顯示。重點是,對應的作業系統版本要對,語系看你喜好。

  另外只有一種情況下可以不安裝PowerShell,只有單純安裝「SQL Server Express」這個版本時,可以不下載及安裝PowerShell,其他兩個2008 Express版本(with Tools及with Advanced Services),或單獨安裝SSMSE管理工具,都需要安裝以上三個套件。

SQL Server 2008安裝失敗的原因


  如果你乖乖的安裝好以上三個套件,然後開始安裝,如果有機會,你會發現一件很好玩的事,SQL Server 2008不管你怎麼安裝,SQL Server 2008就會是安裝失敗,怎麼樣都裝不起來。

  哈,發生了什麼事,我已經安裝過不下N次2005/2008 Express,SQL Server 2005/2008,都沒有發生過這種情況,而且我在一台剛灌好完全乾淨Windows Server 2003伺服器上安裝,怎麼試都找不出問題點,又在一台Vista上測試,還是一模一樣。我先排除硬體的問題,最後問題出現在Microsoft .Net Framework 3.5 SP1這個「最新」的套件上,Microsoft .Net Framework 3.5 SP1裡會幫我們安裝一個最新版本MSXML 6 SP2的套件,這個MSXML 6 SP2版本會造成SQL Server 2008安裝失敗,真是害死人的MSXML 6 SP2,這個問題讓我花了整整一周時間。所以在進行安裝之前,還才必再做一件事:

  安裝SQL Server 2008 (含Express)完成之後,再上MSXML 6 SP2版本就不會有問題。

  • MSXML 6 SP2:使用Windows Update升級即可。

  註:以上問題,除了SQL Server Express with Service Pack 1這個版本不會出現安裝失敗問題,是可以正常安裝。另外,你如果是在XP環境下,預設是不會安裝MSXML 6 SP2,所以不會有安裝失敗的問題。

2008 EXPRESS下載



  廢話一堆,進入主題吧。
  完成安裝環境的準備後,選擇你所需要的版本下來回來,然後就可以正式進入安裝SQL Server 2008 Express。

SQL Server 2008 Express


  • SQL Server Express Service Pack 1:下載點
    Microsoft SQL Server 2008 Management Studio Express:下載點
  • SQL Server Express with Tools:下載點
  • SQL Server Express with Advanced Services:下載點
  • SQL Server Expres Service Pack 1:下載點
  • Microsoft SQL Server 2008 線上叢書 (2009 年 5 月):下載點
  • 範例和範例資料庫 (英文):下載點

  先選一個符合你需求的2008 Express版本來安裝。如果你選擇SQL Server Express這個版本,建議直接選with Service Pack 1的版本套件,可以各自獨立在個別電腦設備安裝,或是原本資料庫伺服器沒有使用SSMSE的需求,後來有了,那就可以後來再加安裝上去即可(要先裝PowerShell)。如果2008 Experss及SSMSE都安裝了,那就是2008 Express + SSMSE = SQL Server Express with Tools 這個版本套件。

  2009年4月7日SQL Server Express推出Service Pack 1,所以你安裝with Tools及with Advanced Services版本,切記,安裝之後一定要快上Service Pack 1。除了Service Pack很重要之外,在學習SQL Server最重要的就是這本「Microsoft SQL Server 2008 線上叢書」,這是你玩SQL Server最重要的一本參考書,它方便你在本機閱讀及查詢。這是一本可以對抗外面書局所有關於SQL Server的書(也包含本文),包山包海,要什麼有什麼,只差你用多少心思去了解它。

  在「範例和範例資料庫」裡你可以下載到一大堆的範例和範例資料庫,這些資料庫可以讓你拿來習慣用,不用怕把資料庫毀了,努力玩、用力玩、盡量玩,玩的越多,得到的就越多。

方法二:全自動安裝法


  這個方法二可強大了,這可以說是Microsoft IIS方面一個大進步。如果你認真的看最近的微軟發表產品,你會發現功能已經到了強大的境界,但強大的東西就有一定複雜性。安裝一個SQL Server,以前只要下一步加下一步就可以完成的東西,現在必須先安裝A再安裝B還有C,而且安裝時還要注意東注意西。所以微軟也注意到了我們的需求,所以Microsoft推出了一個稱「Microsoft Web Platform Installer(WPI)」的軟體,這個軟體可好用了,它可以「全自動」幫你安裝Microsoft Web Platform(微軟網站平台,說的很白了)所需要的任何東西。只要這個WPI所支援的產品,都可以透過它來自動安裝及使用。

Microsoft Web Platform Installer:下載點 (目前最新2.0 RC版本)

  下載回來會是一支wpilauncher.exe程式,執行安裝:

Microsoft Web Platform Installer安裝初始畫面
  它會依你的作業系統平台顯示你可以安裝的項目。

  第一部分顯示「What’s New?」
  也就是現在有什麼新的產品、軟體可以在Microsoft的網站平台安裝執行。你可以很清楚看到ASP.NET MVC 1.0、SQL Server Express 2008 with Service Pack 1、SQL Server 2008 Management Studio Express,「PHP 5.2.10」,你沒有看錯,現在Microsoft與開放原始碼的關係越來越好,連PHP都直接支援。

Microsoft Web Platform Installer中What's New?
  第二部分顯示「Web Platform」,也是就網站平台部分。

Microsoft Web Platform Installer中網站平台

  這部分的重點在後面的「Customize」,例如我們點擊Web Server後面「Customize」,出現下例自訂選項,

Microsoft Web Platform Installer網站平台的自訂選項
  因為我是在Windows XP上執行,所以出現了IIS 5的選項,在不同平台會出現不同選項,你可以看到除了IIS之外,我還可以安裝其他相關套件,例如安全性的URL Scan 3.1。所以每一項Customize都要好好進去看看。

 第三部分是「Web Applications」,網頁應用程式。也就是Microsoft幫你把目前網路上與.NET Framework配合的很好的應用程式幫你找好也列表出來,這裡面全是當紅的應用程式。你只要選擇你想安裝的應用程式即可,WPI就會自己幫你安裝起來。

Microsoft Web Platform Installer的網站應用程式

  WPI在安裝之後,會在你開始程式集裡留下一支WebPlatformInstaller.exe程式,你可以隨時執行,WPI會去同步網路上的資訊,看是否有出新的軟體或套件,讓你節省很多不必要的時間。

  看完後,有沒有很心動

三、安裝SQL Server 2008 Express


  這裡我們使用傳法安裝法來安裝SQL Server Express with Advanced Services來練習安裝。

1、安裝前檢查



  當你開始安裝之前,先啟動「System Configuration Checker」工具,檢查一下,此工具就是在檢查我們前面環境準備的東西。

2、檢查結果
  基本上只要沒有「失敗」項目即可。


  請注意,這裡檢查不出來「MSXML 6 SP2」的問題。

3、選擇「安裝」,然後選擇「新的SQL Server獨立安裝」


4、安裝程式會再一次進行檢查


5、輸入產品金鑰
  由於我們是安裝2008 Express版本,所以不用輸入,按「下一步」就好了。


6、勾選「我接受授權條款」,按下一步;
  註:為什麼繁體版的SQL Server會出現簡體的授權條款?


7、按下「安裝」讓程式開始進入正式安裝過程;


8、安裝程式再一次檢查:


9、選擇你所需要的功能;


  這裡我們雖然選擇SQL Server Express with Advanced Services版本來安裝,但這裡的「特徵選取」有點像「自訂」的味道,舉例說,如果我只選「Database Engine Services」與「管理工具 – 基本」,那其實就是安裝「SQL Server Express with Tools」是一樣的意思。

  執行個體功能,最少要選「Database Engine Services」。共用功能裡的「管理工具 – 基本」就是我們說那SSMSE管理工具。以上兩個是建議必定要安裝的,練習用就「全選」,其他看你的需求了。

  這邊還有一個重點,就是「共用功能目錄」。等一下在安裝過程裡,你可以看到在安裝2008 Express過程中,是可以把核心系統與其他功能系統分開安裝到不同目錄,例如把「執行個體」與「共用功能」分開安裝在不同的Partition,所以如果一開始你就有單獨規劃屬於資料庫的Partition,那麼建議是可以把這裡的目錄指向專屬的Partition去。

10、執行個體組態


  這裡先讓我們了解一下什麼是執行個體?執行個體是一個讓我們在同一台伺服器裡可以同時安裝、操控數個資料庫的技術。這裡指的資料庫可不是資料庫檔案(*.mdf),是資料庫(Database),這樣說好了,像我的電腦裡,有SQL Server 2005,後來又安裝了SQL Server 2008,那電腦裡的應用程式,怎麼知道要跟那個資料庫做連接、做資料處理?

  重點就在「執行個體」,簡單說,你就把執行個體看成每一個「資料庫的名稱」,例如,我這次安裝的資料庫名稱叫「SQLEXPRESS」,然後,我在同一台電腦再安裝一次SQL Server 2008,然後我給他執行個體的名稱為「SQLBruce」。然後只需在使用時(SSMSE、網頁、應用程式都一樣)指定你所要「連接」的資料庫執行個體名稱,這些程式就知道要跟那一個資料庫來進行連接及處理的動作。

  預設執行個體:此執行個體是藉由執行它的電腦網路名稱來識別。一部電腦中只能有一個是預設執行個體。它能讓較早SQL Server版本來使用SSMSE來連線到預設執行個體。

  具名執行個體:此執行個體是以電腦的網路名稱加上執行個體名稱來識別,格式為{Computer Name}\{Instance Name},例如:

  DS\SQLExpress
  DS\SQLBruce
  以上是標準使用{Computer Name}\{Instance Name}的格式。

  192.168.1.10\SQLExpress
  192.168.1.10\SQLBruce
  你也可以使用IP來代替{Computer Name}部分。

  DS.yourdomain.com\SQLExpress
  DS.yourdomain.com\SQLBruce
  你也可以使用Domain來代替{Computer Name}部分。IP與Domain在遠端連線時會使用到。

  .\SQLExpress
  .\SQLBruce

  這個重要,這個「‧」(點)代表「本機」的意思。如果你是在本機作業,那就可以使用這個簡寫「‧」來代替{Computer Name},例如,你的資料庫與網站是在同一台伺服器,那麼網站內與資料庫連接相關程式碼,就可以使用這個「‧」來簡化程式碼

  另外注意,SQL Server的系統名稱(sysnames)與保留名稱不可作為執行個體名稱,例如「default」就不行,因為它是安裝程式所使用的保留名稱。

  如果是練習用,我建議用原設定值就好,如果是要用在正式的環境,我建議修改預設執行個體名稱,畢竟會玩MS SQL Server的人或黑客也都知道這種預設名稱,如果他要Try,當然會先找懶惰的人下手。多點一保護總是好的。

  執行個體根目錄,共用功能目錄同樣的理由,如果你一開始有規劃資料庫Partition,也是建議安裝目錄指向專屬的Partition去。

11、磁碟空間需求


  綜合以上組態並檢查磁碟空間,這裡你就可以看到除了必要的資料庫系統檔案,我安裝到C:\外,其他共用安裝目錄、執行個體目錄,我全部規劃一個獨立的Partition。

12、伺服器組態


  重點來了,如果你安裝過SQL Server 2000或SQL Server 2005,這裡是跟SQL Server 2000/2005在安裝過程裡比較大差異的地方。

服務帳戶



  在服務帳戶你可以為每個「服務」設定不同的「帳戶」來啟用這個服務。我們知道在Windows系統裡,每個服務都是需用有一個帳戶來啟用,以往的設定都會使用系統預設的帳戶來啟用,但這樣往往造成一個問題,也就是這些預設的帳戶往往是不安全的。而一般我們也會建議使用低權限的帳戶來當成這些服務的啟用帳戶。

  我這裡建議是可以依使用服務的不同,自行建立個別的服務啟用帳號。我在系統裡就另外建了三個一般帳戶「SQLDE」「SQLRS」「SQLFFDL」,密碼一定要用高度複雜性的密碼。

  • SQLDE:SQL Server Database Engine
  • SQLRS:SQL Server Reporting Services
  • SQLFFDL:SQL Full-text Filter Daemon Launcher
  (最好也不用一模一樣,再加點自己的變化)



  我這樣設定,除了簡單就可以看得出來這個帳戶是做什麼用途,也可以減少系統不必要的安全性問題,因為我建立的都是最一般性的帳戶,再加上高度複雜性的密碼,就算黑客拿了也沒什麼用。

  在Windows系統建立帳號之後,回到我們安裝畫面中,依順輸入帳戶名稱及密碼,如果錯了,安裝程式會提醒你,而且也沒有辦法再按下一步。

  在服務帳戶裡還有一個預設停用的「SQL Server Browser」服務。如果你有需要使用遠端連線到SQL Server的話,建議把這個SQL Server Browser改為「自動」啟用。簡單說,這個服務也就是讓Server的資料庫也能讓遠端連線進來進行作業。

  例如我常需要在我的NB或PC上連到遠端SQL Server伺服器,但如果SQL Server這台伺服器沒有開SQL Server Browser的話,那你怎麼連也連不進來,就算設定了port 1433也沒用。

  在這裡還是要再提醒一次,多開一個服務就多一個風險,網路是很不安全的地方,每一次服務的最基本原則就是,有需要才開,沒需要的能關就關。

定序




  伺服器組態的第二個重點,就是定序,其實一般人很少會去動「定序」這裡的設定,如果是我,我也是這樣建議,因為動了就永遠改不回來(其實能改,只是…Big Trouble),但這裡其實是微調整個SQL Server的大地方,有必要加強介紹一下。


  按下「自訂」後,自訂定序的畫面。

Windows定序指示項和排序次序



  你可以從下拉式選單中選出Windows定序名稱,使用不同的定序名稱就會採用相對應的字碼頁(Code Page)。如果有資料庫間複製的需求,所有參與複製的SQL Server資料庫都必須選擇相同的字碼集,因為改變定序必須要重建你的資料庫,這在一個已上線的系統裡是一個非常嚴重的問題,除非你有把握及實力,不然建議使用預設「Chinese_Taiwan_Stroke」選項。

  再定序名稱下方,我們還可以進階選擇要使用的「排序原則」。排序原則會影響到SQL Server儲存資料時的組織方式。

  二進位:使用二進位排序會與其他的排序原則互斥,也就是選擇二進位方式,其他排序原則就無法選擇。二進位是根據字元定義的位元模式排序來比較SQL Server資料表中的資料。二進位會區分大小寫,亦小寫比大寫優先,且區分腔調字,這是最快的排序方式。

  二進位 – 字碼指標:依Unicode資料的Unicode字碼指標排序來比較SQL Server資料表中的資料。對於非Unicode資料則使用二進位排序。

  區分大小寫:預設是沒有區分大小寫。這可以讓前端程式開發人員或後端SQL撰寫時比較容易,且使用者在查詢資料時也不用注意大小寫問題。例如:「select * from orders」正「Select * From Orders」將視為相同的SQL敘述句。這裡還是再提醒一下「安全」的問題,你的方便,也是大家的方便,大家的方便,也是網路上每個人的方便,網路上有好人與壞人,讓壞人方便,也是你要防範的地方。

  使用「區分大小寫」還要注意一個問題,就是資料庫表格中就不能使用大小寫相同的鍵值來當主鍵,這請特別小心。如果想區分大小寫,建議選二進位排序原則,因為這個選項可以得到較好的效率。

  區分腔調字:指定SQL Server區分有口音與沒有口音的字母,例如「a」不等於「á」。

  區分假名:指定SQL Server區分日文的片假名與平假名。如果沒有勾選,SQL Server會將片假名(Katakana)與平假名(Hiragana)視為相同。

  區分全半形:指定SQL Server區分以「單一位元組字元(半形)」和「雙位元組字元(全形)」來表示的同一字元。

SQL定序,用於回溯相容性
  這是為了與較早期的SQL Server 6.5版、SQL Server 7.0版的相容設定。

13、資料庫引擎組態


帳戶提供


  這裡要設定一開始的驗證模式,也就是一開始要使用的登入方式。

  • Windows驗證模式
    Windows驗證接受使用者在登入Windows時獲得驗證,然後再傳送安全性憑證給SSE。而使用者的帳號和密碼只保留在Windows中。當ASP.NET使用Windows驗證時,連接字串不會提供帳號及密碼,只提供使用Windows驗證的指示。適合本機連接使用。
  • SQL驗證模式
    SQL驗證使用儲存在SQL Server中的資料來做使用者驗證。在連接時需提供「使用者名稱」及「密碼」來進行驗證。適合遠端連線使用。
  • 混合模式
    可以自行選擇使用Windows驗證或SQL驗證。

  在安裝過程中,我們建議選擇「Windows驗證模式」,安裝完成後如果有遠端連線的需求,再修改組態為「混合模式」。這樣建議是有原因的,因為如果你在安裝過程裡選擇使用「混合模式」那就必須啟用「內建SQL Server系統管理員帳戶」,我們稱SA帳戶。這在SQL Server早期的版本裡是個大漏洞,原因是早期SQL Server中,系統預設安裝後就有一個權限無限大帳戶sa,而且這個帳戶預設還不用密碼,所以呢,那個時期就出現一堆Scan SQL Server工具,Scan你的網路、你的網站是否有使用SQL Server,然後再試著看你是不是一個「人性來自於惰性」的人,輕輕鬆鬆一個無密碼sa帳戶加port 1433就可以進入無人之地。當然現在這種攻擊少了許多,但是大家還是都知道MS SQL Server裡有個sa帳戶,所以建議還是不要啟用。等安裝完畢,我們進SQL Server再建我們自己的需要的帳戶。

  下方必須指定SQL Server管理員的帳戶,也就是本機在使用Windows驗證模式登入時的帳戶,你可以選擇「加入目前使用者」或自行「加入」使用者。我們點擊「加入目前使用者」即可。

資料目錄




  這裡是讓我可以選擇各自資料庫存放的目錄,如果你想要有比較好的效能、比較好的資料保護,這裡建議是分開存放,這也是我一開始跟大家談Partition的關係,SQL Server文件是建議把「資料庫目錄」和「記錄檔目錄」分開存放,所以如果你已經切割出來G:\dbroot、H:\Logs,那你就可以修改這裡的設定,把「使用者資料庫目錄」和「暫存資料庫目錄」存放到G:\,然後把「使用者資料庫記錄檔目錄」和「暫存的資料庫記錄檔目錄」存放到H:\。最後,2008 Express是沒有提供自動備份的功能,但是可以手動備份,這個手動備份建議不要存放在與SQL Server同一顆硬碟,才能達到較好的備份效果。所以最後「備份目錄」對我們的影響不大。這邊所有的目錄路徑只是個預設路徑,未來例如我們在新增資料庫時還是可以自行指定相關路徑。

FILESTREAM




  這裡我引述TechNet文件的解譯:「FILESTREAM 功能提供一個方式來儲存及存取大型二進位值,其方式是透過 SQL Server 或直接存取 Windows 檔案系統。大型二進位值是大於 2 GB 的值。在每天建立的資料中,有許多都是未結構化的資料,例如文字文件、影像和視訊。這些未結構化的資料通常是儲存在資料庫外面 (與結構化資料分開)。這樣的分隔可能會造成資料管理更為複雜。或者,如果資料與結構化的儲存體有關聯,則檔案資料流處理的功能和效能可能會受到限制。

  FILESTREAM 會將 SQL Server Database Engine 與 NTFS 檔案系統整合,其方式是將 varbinary(max) 二進位大型物件 (BLOB) 資料當做檔案儲存在檔案系統上。Transact-SQL 陳述式可以插入、更新、查詢、搜尋及備份 FILESTREAM 資料。Win32 檔案系統介面提供了資料的資料流方式存取。

  FILESTREAM 會使用 NT 系統快取來儲存檔案資料。如此可減少 FILESTREAM 資料可能對 Database Engine 效能產生的任何影響。並不會使用 SQL Server 緩衝集區;因此,此記憶體可用於查詢處理。」

  簡單的說,也就是說你可以把「影、音…」等多媒體資料也存入資料庫中,透過FILESTREAM功能。如果不會使用到,可以先不啟用,需要時可以使用修改組態的方式來啟用FILESTREAM功能。我們先選擇不啟用。

14、Reporting Services


  如果你是安裝2008 Express及2008 Express with Tools是沒有這個畫面,這裡是設定報表伺服器的使用方式。如果你沒有使用到報表伺服器或暫時不會使用到,可以先選第三項。記得,每啟用一個服務就多吃一點效能。我們先選擇第一項「安裝原生模式預設組態」。

15、錯誤和使用方式報告


  這看你自己吧,是否要讓Microsoft收集你的硬體資訊及使用方式。

16、安裝規則


  安裝前的最後一次檢查。

17、準備安裝


  最後確認一下要安裝的2008 Express的功能及項目。


  最後需要一點時間來安裝,安裝完成之後,記的要上SQL Server 2008 Service Pack 1,還有MSXML 6 SP2這個會影響SQL Server 2008安裝的元件。

  到這裡,我們已經完成了整個2008 Express的安裝,但事情結束了嗎?還沒,因為安裝好之後,2008 Express還有許多設定值需要我們去微調一下。例如,要讓2008 Express提供連端連線等功能。

  還有,使用連端連線功能,一定要使用那個不安全port 1433嗎?我想在ASP.NET裡寫存取遠端2008 Express程式,怎麼寫?

四、SSMSE及SQL Server Configuration Manager



  這個部份我們從SSMSE來與2008 Express連線,連線後進行一些組態的調整,讓2008 Express可以開啟混合模式,開放遠端連線,讓管理者可以由遠端與2008 Express連線進行工作。要開放SQL Server達端連線,除了SSMSE外,還需要在SQL Server組態管理員進行一些設定。

SSMSE組態


1、開啟SSMSE管理工具




  「伺服器名稱」:也就是執行個體名稱,記得格式為{Computer Name}\{Instance Name}。還記得那個「‧」嗎?不記得的話,請再回去複習一次。

  「驗證」:如果是在SQL Server本機,我們使用Windows驗證來連接登入即可,如果需要遠端連接才需要使用「SQL Server驗證」。除非是練習機,不然不太可能讓你每天在機房的伺服器旁做本機登入,所以絕大多數而言都會開SQL Server 驗證,換個例子講,當我們使用VWD或Visual Studio寫.NET資料庫相關程式時,就必須使用SQL Server驗證來跟SQL Server做驗證連接,然後在本機Visual Studio開發相關程式,開發好了之後,上傳到伺服器上,基本上資料庫相關程式是連改都不用改,因為你在開發階段就已經將「遠端連線」的相關程式碼寫好了,所以不管你將這支網頁程式放到那裡,基本上它都找得到SQL Server,然後連線,存取資料。

  因為安裝時設定為Windows驗證,所以我們先在本機使用Windows驗證來連接2008 Express。

2、物件總管




  透過Windows驗證連接成功後,你在管理工具左邊可以看到工具項「物件總管」,在物件總管你可以選擇你所要進行的相關操作。另外,透過物件總管,我們也可以同時間操控多台2008 Express,例如下圖,我使用遠端連接到另一台遠端的2008 Express。


.\SQLExpress組態




  我們在最上面.\SQLExpress點滑鼠右鍵,然後選「屬性」,


  切換到處理器頁面,我們能看到我實體是一顆四核心Q9400的CPU,還記得我們的硬體限制嗎?限制的是實體CPU不是多核心的核心數目。


   切換到安全性頁面,這是我們要變更組態的第一個地方,將Windows驗證修改為「混合模式」,也就是「SQL Server及Windows驗證模式」,按確定之後就可以使用SQL Server驗證來遠端連線了嗎?還沒。

  開啟SQL Server驗證模式後,第二步我們還需要設定能使用SQL Server驗證登入的「帳戶」,因為一開始我們就設定Windows驗證模式,所以SQL Server預設的sa是沒有啟用,也不建議啟用

新增登入帳號



  安全性 → 登入 → Mouse左鍵 → 新增登入



  登入屬性



一般



  登入名稱:輸入使用者名稱。如果你要使用Windows驗證,可點擊「搜尋」來搜尋本機Windows帳號。

  驗證模式:選擇此使用者是要使用Windows驗證或是SQL Server驗證來登入。我們選擇SQL Server驗證,底下的密碼相關資訊才會有作用,需要注意是的底下來三個密碼原則:
  1. 強制執行密碼原則:必須使用「強密碼」或「複雜密碼」。增強式密碼長度必須至少七個字元,並包含以下三組的字元:「字母」、「數字」和「符號」。
  2. 強制執行密碼逾期
  3. 使用者必須在下次登入時變更密碼(需勾選「強制執行密碼逾期」才會有作用)
  建議最少使用「強制執行密碼原則」,來減低被攻擊成功的機率。


  預設資料庫:可設定此使用者登入後預設使用的資料庫。我們順便簡介一下SQL Server系統資料庫:

  • master:
    主要資料庫,系統表格、環境資訊、伺服器重要資訊都存放在master資料庫內。
  • model:
    我們在建立新資料庫時的樣版。我們新增資料庫(CREATE DATABASE)時,系統第一步便會將model資料庫的內容100%複製過來,然後再依我們的需求進行修改。所以當你更改model資料庫後,日後新增的資料庫也會100%複製更改後model資料庫。例如:我們常用的預儲程序,我們新增一個sp_db_alert到model資料庫中,那未來新增的任何資料庫都包含這個預儲程序。
  • tempdb:
    是SQL Server用來當工作空間用的資料庫,如儲存使用者建議的暫存表格、儲存使用者宣告的全域變數…等。
  • msdb:
    SQL Server Agent用來安排警示(Alerts)、工作(Jobs)及記錄操作的資料庫。

伺服器角色


  • Bulkadmin:
    大量管理員 (bulkadmin) 固定伺服器角色的成員可以執行 BULK INSERT 陳述式。
  • Dbcreator:
    資料庫建立者 (dbcreator) 固定伺服器角色的成員可以建立、改變、卸除以及還原任何資料庫。
  • Diskadmin:
    磁碟管理員 (diskadmin) 固定伺服器角色的成員可以管理磁碟檔案。
  • Processadmin:
    處理序管理員 (processadmin) 固定伺服器角色的成員可以結束在 Database Engine 之執行個體中執行的處理序。
  • Securityadmin:
    安全性管理員 (securityadmin) 固定伺服器角色的成員,可以管理登入及其屬性。他們可以 GRANT、DENY 及 REVOKE 伺服器層級權限。他們也可以 GRANT、DENY 和 REVOKE 資料庫層級權限。此外,他們可以重設 SQL Server 登入的密碼。
  • Serveradmin:
    伺服器管理員 (serveradmin) 固定伺服器角色的成員可以變更整個伺服器的組態選項與關閉伺服器。
  • Setupadmin:
    setupadmin 固定伺服器角色的成員可以加入和移除連結伺服器,也可以執行一些系統預存程序。
  • Sysadmin:
    系統管理員 (sysadmin) 固定伺服器角色的成員可以執行 Database Engine 中的所有活動。依預設,Windows BUILTIN\Administrators 群組 (本機管理員群組) 的所有成員都是系統管理員 (sysadmin) 固定伺服器角色的成員。
  • Public:
    每一個 SQL Server 登入都屬於 public 伺服器角色。當伺服器主體未被授與或拒絕安全性實體物件的特定權限時,該使用者會繼承授與給該物件之 public 的權限。只有當您想要將任何物件提供給所有使用者使用時,才指派該物件的 public 權限。

  一般帳戶依預設選Public角色。

使用者對應


  選取此使用者登入後可以存取的資料庫。一般使用者不建議勾選系統資料庫。我們一開始有個「預設資料庫」,我們選擇的「master」,master是SQL Server系統資料庫,系統資料庫是很重要的基礎資料庫,怎麼會讓一般使用者可以登入使用,如果有人一個不小心,那你的SQL Server可能會直接掛點。在這個「使用者對應」頁面,你可以看到一個「已啟用master的Guest帳戶」,也就是說雖然你是一般帳戶來登入,但實際上是以Guest來與master溝通作業,Guest帳戶已經把會對master造成的傷害的動作做了一定的保護,所以就算一般使用者預設資料庫是選擇master也沒有關係。

安全性實體


  在此使用者、資料庫角色,或應用程式角色的資料庫安全性實體上設定權限。按一下 [搜尋],將資料庫安全性實體加入 [安全性實體] 方格中。然後選取方格中的安全性實體,並在 [明確權限] 方格中設定適當的權限。

  一般使用者使用預設值即可。

狀態


  • 連接到Database Engine的權限:即Windows驗證
  • 登入:即SQL Server驗證

  你可以暫時拒絕或停用此使用者來連接SQL Server。按下「確定」,完成新增登入使用者的動作。SSMSE的設定到此告一段落,要讓SQL Server開放遠端連線的還需要最後一步「SQL Server組態管理員」。

SQL Server組態管理員


SQL Server服務





  要提供SQL Server遠端連線的功能,除了SQL Server是一定要啟用之外,還需要確定「SQL Server Browser」這個服務是啟用的,在提供遠端連線的伺服器上可以將啟動模式設定為「自動」。



SQL Server網路組態





  網路組態重點在「TCP/IP」身上,預設SQL Server上的TCP/IP是停用的,這也是為什麼如果你沒有進來SQL Server組態管理員設定,前面做再多工也是白工。點擊兩下「TCP/IP」 → 通訊協定 → 已啟用 → 修改為「是」



  選擇「IP位址」 → 找到「IPAll」下方會有兩個項目:
  • TCP動態通訊埠:後面會帶一隨機數字。
  • TCP通訊埠

  請刪除「TCP動態通訊埠」後面的隨機數字,然後在「TCP通訊埠」輸入「1433」這個SQL Server預設連接通訊埠。



  接下「確認」,系統會提醒要重啟服務,設定才會生效,回到「SQL Server服務」,然後重啟SQL Server讓設定生效。



SSMSE連接遠端SQL Server



  我們到另一台電腦開啟SSMSE管理工具,然後依序輸入遠端SQL Server的認證資料,



  按下連接,



  我們可以很清楚的看到連線資訊,我們已經成功連接到遠端的SQL Server。但是還沒有結束,問題出在我們剛才設定的TCP/IP Port 1433身上。這個Port 1433可以說是SQL Server本身的連接預設Port,早期的SQL Server中有一個不需密碼的使用者"sa",而這個使用者又偏偏在SQL Server有極大的權利,可以呼風喚雨,而我們這些SQL Server安裝後設定的預設服務Port就是1433,而駭客們就是使用"人性=懶=惰性"的漏洞,許多的資料庫系統安裝人員很習慣性的「下一步」「下一步」,而建立了許多的「預設型」SQL Server,駭客們就先Scan你的網路是否有開啟1433 port,有的話,接著他會試著使用sa這個使用者來連接,因為不用密碼,然後就BingGo!或是你有設定密碼,駭客們也是可以慢慢猜,讓你防不勝防。

  所以一開始安裝時,我便不建議使用SQL Server驗證模式,因為在安裝啟用SQL Server驗證模式會啟用sa帳戶,那就算不啟用sa帳戶,那麼黑客們還是知道這個預設Port 1433,我們除了使用防火牆來加強安全外,另外我們還已可以修改這個預設Port 1433來避免一些不必要的問題。

修改SQL Server預設連接埠



  修改很簡單,SQL Server組態管理員 → SQL Server網路組態 → TCP/IP → IP位址 → IPAll → TCP通訊埠 → 將「TCP通訊埠」修改為大於1024的埠,我們設定為2000,然後重啟SQL Server服務。

  我們回到另一台電腦,使用SSMSE來連接,你會發現無法連接SQL Server了,這是因為SSMSE預設就是使用Port 1433來連接SQL Server,所以當你在SQL Server的預設Port修改之後,你也要跟SSMSE說現在要使用那個Port來與SQL Server連接。

設定SSMSE連接埠



  • 原:伺服器名稱:192.168.3.12\ICSSQL
  • 修:伺服器名稱:192.168.3.12\ICSSQL,2000
  在伺服器名稱最後加上一個「,(逗點)」,然後加上使用的Port。(註:如果你有使用過早期的管理工具,早期管理工具要設定埠是使用「:(冒號)」)




  這樣我們就完成了整個SQL Server的安裝及遠端連線的設定。

(5) ASP.NET連接遠端SQL Server



  好了,繞了一大圈,只為了一個遠端連接SQL Server?那遠端連接SQL Server要做什麼事?就我所知最大的好處就是分散式架構,什麼是分散式架構?我舉個例子,網站。

  SSMSE ←→ SQL Server ←→ AP / Web Page

  SSMSE比較是後端及管理者使用,管理者可以透過管理工具從遠端來對SQL Server進行管理工作。而前端的應用程式或網站,一樣可以和遠端的資料庫來連接而進行資料存取的工作。

  Web Site1 , Web Site2, WebSite3 … ←→ SQL Server

  Web Site1在新竹機房,Web Site2在深圳機房,Web Site3在日本機房…但SQL Server在香港機房,這樣的應用就是分散式架構,可以讓架構更有彈性更靈活的應用。

  以下我們就以ASP.NET來存取遠端資料庫來實作。

  我們先開啟Visual Studio 2008(註:Visual Web Developer也一樣,只不過稱呼有點不同),建立一個新網站,在左方「方案總管」下方切換到「伺服器總管」,在「資料連接」按左鍵「加入資料連接」



  選擇資料來源:Microsoft SQL Server



  繼續 → 加入連接:依序輸入連接資訊



  按一下「測試連接」,





Default.aspx資料庫連接設定



  先拉一個SqlDataSource,然後「設定資料來源」,



  選擇資料連接



  將連接字串儲存到應用程式組態檔,



  設定Selete陳述式



  先勾選「*」,代表選擇所有資料行,然後點擊「進階」,



  勾選「產生INSERT、UPDATE、DELETE陳述式」,按「確定」,再按「下一步」,點擊「測試查詢」,



  點擊「完成」。

  再拉一個GridView控制項,「選擇資料來源」選擇「SqlDataSource1」,勾選「啟用分頁、排序、編輯、刪除」四項。





  儲存檔案,然後使用Visual Studio本身的網站伺服器來檢視網頁,



  一個擁有「編輯、刪除、排序、分頁」的網頁就馬上出現了,如果你寫過網頁程式,想想你之前花上述四個功能就要花你多少時間,現在不過是隨手之間,基本上我連半行程式都還沒開始寫就已經完成。

  以上ASP.NET的重點其實是在於「連線字串」這一行:

  Data Source=192.168.3.12\ICSSQL;Initial Catalog=Northwind;Persist Security Info=True;User ID=kkbruce;Password=1q2w3e4r5t

  透過它你就能跟遠端SQL Server連接來存取資料。如果不想使用資料連結控制項,那以上這行你就要跟它熟一點。

  • Data Source:連接的SQL Server;
  • Initial Catalog:要連接的資料庫;
  • User ID:SQL Server驗證登入帳戶;
  • Password:帳戶密碼;

  其他ADO.NET部分請自行參考書籍。

  現在不管這個Default.aspx放在那個地點,都可以正確連接資料庫來存取得資料(Data Source資料要正確,因為我們是使用虛擬IP),而這樣的運作才是Internet的本質。

  以上注重在安裝、設定2008 Express / SSMSE及簡易ASP.NET互動,資料庫上還有許多專業知識等大家去學習,這邊只是一個簡單的入門介紹,希望能幫助到大家。