我已經完成了我的第一個管理sql server 2005上某些表的c#應用程序,但我想修改它,以便它可以從文本文件讀取連接字符串。通過這樣做,我可以將我的應用程序移動到另一臺PC上,只需更改文本文件中的連接字符串,並避免代碼本身發生任何變化。我怎樣才能做到這一點?避免在代碼中編寫連接字符串
回答
看看System.Configuration(http://msdn.microsoft.com/en-us/library/system.configuration.aspx)。有一些內置的方法讀取
可以從專用配置部分在App.config
文件來管理您的連接字符串的配置文件(app.config)中。查看here瞭解更多信息。
而不是在非標準解決方案上使用純文本文件,請參閱什麼.NET 已提供。當您移動應用程序而無需重新編譯它時,可以更改配置文件中的值,因爲配置文件正在運行時讀取。
下面是一個例子:使用ConfigurationManager.ConnectionStrings["MyConnectionString"]
<configuration>
<connectionStrings>
<add name="MyConnectionString"
connectionString="Data Source=.;Initial Catalog=MyDatabaseName;IntegratedSecurity=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
訪問它從代碼。
如果你真的要使用一個文本文件,那麼你應該採取略有不同的方法。
- 首先,您必須在連接字符串文件的文件系統上使用固定路徑。您可以使用硬編碼將其存儲在您的應用中 - 一個不良實踐,或使用設置或App.config文件定義文本文件路徑。
- 你必須以編程方式讀取文件。如果是純文本,則可以使用
System.IO.File.ReadAllText(filePath);
,其中filePath
參數是該文件的絕對路徑。爲了在編譯應用程序時需要更改路徑,可以使用配置/設置方法來定義文件的物理路徑,因爲更改它們將不需要重新編譯(如前面針對連接字符串所述)
您應該使用connectionStrings
部分在您的應用程序/ web.config文件:
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-EditorTemplateCollectiosns-20130404170435;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-EditorTemplateCollectiosns-20130404170435.mdf" />
</connectionStrings>
然後,當你要訪問它的代碼,這樣做:
var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"];
我不能使用文本文件嗎? – 2013-04-07 11:28:04
app.config *是一個文本文件,特別是XML,並且框架內置了用於處理它的功能。相信我和其他答覆者;配置文件就是你想要的。 – 2013-04-07 11:58:28
好的,非常感謝 – 2013-04-07 14:09:13
,如果你正在開發的桌面應用程序,則優先停留的地方,這裏的app.config
<connectionStrings>
<add name="TailorShop.Properties.Settings.TailorShopConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=TailorShop;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
聲明連接名稱,怎麼它的屬性定義(屬性節點上雙擊項目中的解決方案資源管理器並轉到設置) 然後你可以在那裏添加你的連接字符串。之後,你會看到如上所示;
現在,爲了訪問它,您可以在代碼中執行此操作;
Settings.Default.TailorShopConnectionString
爲了使用此代碼,您必須添加一個引用,例如yourprojectname.properties;
using TailorShop.Properties;
我不能使用文本文件嗎? – 2013-04-07 11:28:34
爲什麼不是@BoulisShenoda,那麼你應該使用流讀取器爲 – 2013-04-07 14:06:14
,但app.config也是一個文本文件,除了它有一個特殊的擴展名,即.config並且也是一個xml類型 – 2013-04-07 14:06:52
- 1. 如何避免硬編碼字符串
- 2. 避免硬編碼字符串html
- 3. 如何在編寫接口時避免重複代碼?
- 4. 避免在加密和編碼的URL字符串中換行
- 5. 如何避免在TFS中存儲Web.Config連接字符串密碼
- 6. 如何避免字符串連接中的未定義?
- 7. 如何編寫連接字符串
- 8. 如何編寫SQL連接字符串?
- 9. 在Python字符串中的特殊字符編寫代碼
- 10. 避免TextView中的硬編碼字符串
- 11. 逃逸「\」字符在python串[需要避免六編碼]
- 12. 編寫Ruby代碼字符串
- 13. 編碼ui ddt tfs連接字符串
- 14. 避免在代碼
- 15. mvc連接字符串代碼優先
- 16. 在加密字符串中避免「==」
- 17. 避免字符串連接以獲取大型日誌消息
- 18. 避免給用戶名/傳入連接字符串
- 19. 避免字符串連接創建查詢
- 20. 如何在c#中的app.config中編寫mysql連接字符串?
- 21. 比較Java泛型時如何避免字符串硬編碼?
- 22. 避免字符串和硬編碼函數名稱 - 優勢?
- 23. 編寫更高效的xquery代碼(避免冗餘迭代)
- 24. C#使用appSettings參數在app.config中編寫連接字符串
- 25. 在web.config中編寫連接字符串是否安全?
- 26. 如何在asp.net核心Web Api中編寫連接字符串?
- 27. 連接字符串代理?
- 28. 如何避免在Dynamics CRM 2011 SQL報告中嵌入連接字符串?
- 29. 如何避免在xmlroot中編碼特殊字符
- 30. 當密碼包含特殊字符時編寫連接字符串
我不能使用文本文件嗎? – 2013-04-07 11:29:01
@BoulisShenoda當然可以,但是int並不是真的需要。請參閱我的重訪答案,以獲取更多細節。 – 2013-04-07 11:56:37