2010-12-02 52 views
0

我开发了一个表单,它从用户的用户标识和密码中获取并显示本地服务器中可用的数据库列表。现在我已经以硬编码格式完成了它。这个。就像删除硬编码值到app.config文件

public void BindDBDropDown() 
{ 
    //Create the connection object 
    SqlConnection sConnection = new SqlConnection(
     ConfigurationSettings.AppSettings["ConnectionString"]); 

    //To Open the connection. 
    sConnection.Open(); 

    //Query to select the list of databases. 
    string selectDatabaseNames = 
     @"SELECT NAME FROM MASTER..SYSDATABASES"; 

    //Create the command object 
    SqlCommand sCommand = 
     new SqlCommand(selectDatabaseNames, sConnection); 

    try 
    { 
     //Create the data set 
     DataSet sDataset = new DataSet("master..sysdatabases"); 

     //Create the dataadapter object 
     SqlDataAdapter sDataAdapter = 
      new SqlDataAdapter(selectDatabaseNames, sConnection); 
     sDataAdapter.TableMappings.Add("Table", 
      "master..sysdatabases"); 

     //Fill the dataset 
     sDataAdapter.Fill(sDataset); 

     //Bind the database names in combobox 
     DataViewManager dsv = sDataset.DefaultViewManager; 

     //Provides the master mapping between the sourcr table 
     //and system.data.datatable 
     cmbDatabases.DataSource = 
      sDataset.Tables["master..sysdatabases"]; 
     cmbDatabases.DisplayMember = "NAME"; 
     cmbDatabases.ValueMember = ("NAME"); 
    } 
    catch(Exception ex) 
    { 
     //All the exceptions are handled and written in the EventLog. 
     EventLog logException = new EventLog("Application"); 
     logException.Source = "MFDBAnalyser"; 
     logException.WriteEntry(ex.Message); 
    } 
    finally 
    { 
     //If connection is not closed then close the connection 
     if(sConnection.State != ConnectionState.Closed) 
     { 
      sConnection.Close(); 
     } 
    } 
} 

/// <summary> 
///This function binds the names of all the tables with primary 
///keys in a dropdown cmbResults. 
/// </summary> 
public void GetPrimaryKeyTable() 
{ 
    //An instance of the connection string is created to manage 
    //the contents of the connection string. 
    var sqlConnection = new SqlConnectionStringBuilder(); 
    sqlConnection.DataSource = "192.168.10.3"; 
    sqlConnection.UserID = "gp"; 
    sqlConnection.Password = "gp"; 
    sqlConnection.InitialCatalog = 
     Convert.ToString(cmbDatabases.SelectedValue); 
    string connectionString = sqlConnection.ConnectionString; 

    SqlConnection sConnection = new SqlConnection(connectionString); 

    //To Open the connection. 
    sConnection.Open(); 

    //Query to select the table_names that have PRIMARY_KEYS. 
    string selectPrimaryKeys = @" 
     SELECT TABLE_NAME 
     FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
     WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' 
     AND  TABLE_NAME <> 'dtProperties' 
     ORDER BY TABLE_NAME"; 

    //Create the command object 
    SqlCommand sCommand = 
     new SqlCommand(selectPrimaryKeys, sConnection); 

    try 
    { 
     //Create the dataset 
     DataSet dsListOfPrimaryKeys = 
      new DataSet("INFORMATION_SCHEMA.TABLE_CONSTRAINTS"); 

     //Create the dataadapter object 
     SqlDataAdapter sDataAdapter = 
      new SqlDataAdapter(selectPrimaryKeys, sConnection); 

     //Provides the master mapping between the sourcr table 
     //and system.data.datatable 
     sDataAdapter.TableMappings.Add("Table", 
      "INFORMATION_SCHEMA.TABLE_CONSTRAINTS"); 

     //Fill the dataset 
     sDataAdapter.Fill(dsListOfPrimaryKeys); 

     //Bind the result combobox with primary key tables 
     DataViewManager dvmListOfPrimaryKeys = 
      dsListOfPrimaryKeys.DefaultViewManager; 
     dgResultView.DataSource = dsListOfPrimaryKeys 
      .Tables["INFORMATION_SCHEMA.TABLE_CONSTRAINTS"]; 
    } 
    catch(Exception ex) 
    { 
     //All the exceptions are handled and written in the EventLog. 
     EventLog log = new EventLog("Application"); 
     log.Source = "MFDBAnalyser"; 
     log.WriteEntry(ex.Message); 
    } 
    finally 
    { 
     //If connection is not closed then close the connection 
     if(sConnection.State != ConnectionState.Closed) 
     { 
      sConnection.Dispose(); 
     } 
    } 
} 

谁能帮我删除这些硬编码的东西,并采取直接从app.config文件的本地服务器地址,用户名和密码???

+0

这可能有帮助http: //social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/9a8c9f5a-092e-4c4a-87bb-9f35d8f55da1 – Egalitarian 2010-12-02 09:45:21

+1

您已经在ConfigurationSettings.AppSettings [“ConnectionString”]`行中执行此操作。对于其他硬编码的东西,这有什么问题? – Steven 2010-12-02 10:12:19

回答

5

当然。

首先,打开你的app.config或web.config文件。

查找以下部分

<appSettings> 
    <add key="...." value="....." /> 
    .... 
</appSettings> 

如果不存在,那么它应该被添加。

现在添加下面的键/值...

<add key="myServer" value="192.168.10.3" /> 
<add key="myUserId" value="gp" /> 
<add key="myPassword" value="gp" /> 

,这是什么样的的app.config现在可以看起来像一个例子...

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="myServer" value="192.168.10.3" /> 
     <add key="myUserId" value="gp" /> 
     <add key="myPassword" value="gp" /> 
    </appSettings> 
</configuration> 

KEWL。现在让我们更新代码。诀窍是使用ConfigurationManager.AppSettings类: -

变化......

sqlConnection.DataSource = "192.168.10.3"; 
sqlConnection.UserID = "gp"; 
sqlConnection.Password = "gp"; 

到..

sqlConnection.DataSource = ConfiguationManager.AppSettings["myServer"]; 
sqlConnection.UserID = ConfiguationManager.AppSettings["myUserId"]; 
sqlConnection.Password = ConfiguationManager.AppSettings["myPassword"]; 

现在你可以改变这些键/值的值(在应用程序.config或web.config)而不必编译代码:)

HTH