2011-03-01 50 views
3

我正在用一個form1連接到sql server來製作一個簡單的c#.net winform應用程序。通過.net winform應用程序連接到sql server

我想建立一個連接到sql server之前,應用程序要求用戶輸入登錄名&密碼連接。

這個我應該怎麼辦:

採取的登錄名&密碼兩個文本框&他們傳遞給連接字符串 或 我應該把它們傳遞給app.config文件&然後使用來自form1.cs中app.config文件的字符串?

這樣可以解決安全問題嗎?如果不是,那麼執行這項任務的其他方式是什麼?

回答

5

我這樣做:

  • 使用SqlConnectionStringBuilder組件
  • 定義之類的服務器名稱,數據庫名稱等,從您的app.config
  • 該組件還具有用戶名和密碼兩個屬性 - 從對話框中填充那些提示用戶輸入此信息的對象
  • SqlConnectionStringBuilder然後爲您提供正確的連接字符串用於連接到您的SQL Server

更新:

我的建議是存儲基本的連接字符串這樣的:

<configuration> 
    <connectionStrings> 
    <add name="MyConnStr" 
      connectionString="server=A9;database=MyDB;" /> 
    </connectionStrings> 
</configuration> 

然後加載這個「骨架」連接字符串(這是不完整的 - 單獨韓元't工作!)進入你的SqlConnectionStringBuilder

string myConnStr = ConfigurationManager.ConnectionStrings["MyConnStr"].ConnectionString; 

SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder(myConnStr); 

然後抓住用戶名和從在對話框中的用戶密碼,並添加這些到連接字符串生成器:

sqlcsb.UserID = tbxUserName.Text.Trim(); 
sqlcsb.Password = tbxPassword.Text.Trim(); 

,然後獲得從SqlConnectionStringBuilder產生的,完整的連接字符串:

string completeConnStr = sqlcsb.ConnectionString; 

using(SqlConnection _con = new SqlConnection(completeConnStr)) 
{ 
    // do whatever you need to do here.... 
} 
+0

先生我在app.config文件根據你的答案使用它:但它不工作<?xml version =「1.0」encoding =「utf-8」 ?> <結構> <添加鍵= 「數據源」 值= 「服務器= A-9; 」/> <添加鍵=「 數據庫」 值= 「數據庫名稱= IMPORTDATA;」/ > <添加鍵= 「受信任」 值= 「Trusted_Connection =真」/> sqlchild

+0

這是Form1.cs代碼: string connectString = ConfigurationSettings.AppSettings [「Data Source」+「Database」+「Trusted」]; – sqlchild

+0

先生,請幫我拿出代碼 – sqlchild

1

通行證登錄連接串。 app.Config不是存儲用戶交互的地方。

1

實現它的另一種方法可能是使用Windows身份驗證在SQL服務器上進行身份驗證。這樣,本地Windows用戶可以對數據庫擁有某些安全特權,並且應用程序的用戶將必須輸入任何憑證。

用於什麼憑據?它們用於建立與數據庫的連接,還是用於訪問應用程序中的用戶帳戶條目和安全權限?

1

對於固定字符串,請使用SecureString類。

+1

沒有意義,因爲在構建連接字符串時,它會被複制到常規字符串。 – Joe

1

SQL身份驗證的細節始終保持從申請認證的詳細信息獨立(當然也有例外...例如:烏爾使烏拉圭回合自己的SQL Server客戶端的版本)

  • 保持你的數據庫連接細節的app.config。
  • 它應該理想地包含一個啓用了應用級限制的用戶。
  • 你所說的登錄是一個存在於C#中的認證模塊。例如:Windows身份驗證,表單身份驗證等
相關問題