簡體   English   中英

如何在WinForms應用程序中存儲連接字符串?

[英]How to store connection string in WinForms application?

我有一個由兩種形式組成的應用程序。 一個表單顯示從數據庫返回的數據字段,另一個表單打開一個窗口,允許用戶選擇從哪個數據庫獲取數據。

目前,應用程序不存儲用戶對數據庫的選擇。 我希望每次用戶選擇要在form2中使用的數據庫時,存儲當前所選連接字符串的內容。

做這個的最好方式是什么? 如果我創建了一個靜態類對象的實例來存儲這些信息,那么是否會保留數據以便在每個表單上使用?

你應該有一個app.config配置文件,並在那里定義一個<connectionStrings>部分:

<configuration>
   <connectionStrings>
       <add name="YourNameHere" 
            connectionString="server=.;database=AdventureWorks;Integrated Security=SSPI"/>
   </connectionStrings>
</configuration>

然后,將System.Configuration的引用添加到項目中,然后您可以輕松檢索這些連接字符串:

string connStr = ConfigurationManager.ConnectionStrings["YourNameHere"].ConnectionString;

using(SqlConnection connection = new SqlConnection(connStr))
{
   // do something here....
}

您可以將連接字符串存儲在App.config並像這樣檢索它:

string connStr = ConfigurationSettings.AppSettings["ConnectionString"];

public SqlConnection conn = new SqlConnection(connStr);

示例App.config

<?xml version="1.0" encoding="utf-8" ?>    
<configuration>    
    <configSections>    
    </configSections>    
<connectionStrings>    
    <add name="ConnectionString" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=DB;Integrated Security=SSPI;" providerName="Microsoft.SqlClient" />    
 </connectionStrings>    
</configuration>

我很想為此目的使用應用程序設置。

http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

這是一個保持連接字符串的推薦位置:-)

雖然有內置的.NET功能來存儲用戶相關信息(通過注冊表,配置文件,設置等),但它們似乎太沉重了。

我建議使用純文本文件並將其保存在用戶文件夾中:

var userPath = Environment.GetFolderPath(Environment
                                             .SpecialFolder.ApplicationData);
var filename = Path.Combine(userPath, "mysettings");

// Read connection string
var connectionString = File.ReadAllText(filename);

// Write connection string
File.WriteAllText(filename, connectionString);

另請注意,幾乎沒有用戶可以使用連接字符串。 他們更願意使用單獨的表單字段指定數據庫名稱,服務器,用戶名等。 要將這些字段映射到連接字符串,您可以使用SqlConnectionStringBuilder類(如果您使用的是MSSQL Server):

// to connection string
var connectionStringBuilder1 = new SqlConnectionStringBuilder();
connectionStringBuilder1.DataSource = "server";
connectionStringBuilder1.InitialCatalog = "database";
var connectionString = connectionStringBuilder1.ConnectionString;

// from connection string
var connectionStringBuilder2 = new SqlConnectionStringBuilder(connectionString);
var serverName = connectionStringBuilder2.DataSource;
var databaseName = connectionStringBuilder2.InitialCatalog;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM