![](/img/trans.png)
[英]"Warning: Issue establishing a database connection!" but the connection string is correct
[英]Establishing database connection
首先,請原諒我的英語。
我和我的小組正在計划申請。 該應用程序可以安裝到其他計算機上,並且應該連接到服務器,並且數據庫受密碼保護。
作為一名學生,我們總是以幼稚的方式做到這一點:
SqlConnection myConnection = new SqlConnection("user id=username;" +
"password=password;server=serverurl;" +
"database=database; " +
"connection timeout=30");
始終硬編碼。
如果我們更改數據庫密碼或更改服務器該怎么辦?
我們還必須更改代碼中的值,在PC中重新編譯並重新安裝該應用程序。 有動態的方式來做到這些嗎?
我們認為,在應用程序的首次運行中,將提示用戶輸入連接詳細信息,並將該數據保存到文件中,應用程序將在每次啟動時將其提取並將其用於數據庫連接,但是其中涉及密碼。
有任何建議,想法,概念,樣本等嗎? 如何以更專業的方式做到這一點? 請幫忙...謝謝。
您可以將數據庫設置存儲在app.config中
Windows使您可以加密文件,以便只有以所有者身份運行的進程才能讀取它們。 您可以將密碼存儲在文件中並對其進行加密。 請參閱MSDN上的File.Encrypt 。
這只是安全性模型中的一個因素。 您可能還希望在應用程序級別對文件進行加密,以使用戶運行的惡意軟件不會四處尋找密碼。
您可以將憑據存儲在配置文件中-這樣,每次密碼更改時都無需重新編譯項目。
配置文件也可以加密,因此您只能通過正在制作的應用程序更改密碼。
有幾種方法可以做到這一點。 首先,您可以將connectionString保存在app.Config / web.config文件中。 您的連接對象可以通過使用以下方式訪問此字符串
PROJECTNAME.Properties.Settings.Default.YOURCONNECTIONSTRINGNAME
您的app.config文件可能看起來像這樣
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <connectionStrings> <add name="Winforms_Demo.Properties.Settings.dbNordwindConnectionString" connectionString="Data Source=(local)\\SQLEXPRESS;Initial Catalog=dbNordwind;User ID=sa" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
如您所見,這種可能性仍然會保存任何經過硬編碼的用戶憑據 (盡管您可以通過手動編輯config.file(甚至在編譯之后)來更改它們。您可以通過向項目中添加新的數據源來創建這樣的配置文件(例如sql server)數據源),然后向導將詢問將connectionString保存在哪里。
另一種可能性是connectionStringBuilder。 此類提供一些屬性:
SqlConnectionStringBuilder conbuild = new SqlConnectionStringBuilder();
conbuild.InitialCatalog = "dbNordwind"; // database name
conbuild.IntegratedSecurity = false; // true if you use winAuthent
conbuild.UserID = "sa"; // e.g get this info by showing a authent form
conbuild.Password = "123";
conbuild.DataSource = "servername";
SqlConnection con = new SqlConnection(conbuild.ConnectionString);
使用這種方法,您甚至可以訪問文件並讀取任何必需的數據。 在這種情況下,您必須研究文件的安全措施!
通過加密文件(System.Security命名空間)或將數據保存到任何isolatedStorage (將使用特定於用戶的Windows安全性)或通過使用“ aspnet_regiis -pef”來加密任何配置文件,可以保護文件的安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.