开发者

Removing the hard coded value to app.config file

I have developed a form that takes from user the user id and password and display the list of databases available in the local server.Now I have done it in hard coded format...like this

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);

    开发者_Go百科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();
        }
    }
}

Can anyone help me in removing these hardcoded things and taking the local server address, userid and password from the app.config file directly???


Sure.

first, open up your app.config or web.config file.

Look for the following section

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

if that doesn't exist, then it should be added.

Now add the following key/values...

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

and this is an example of what the app.config can now look like...

<?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. Now lets update the code. The trick is to use the ConfigurationManager.AppSettings class :-

change...

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

to..

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

Now you can change the values of those key/values (in the app.config or web.config) without having to compile the code :)

HTH


check out the video tutorial on the visual studio settings editor : http://www.lynda.com/home/tutoriallanding.aspx?lpk4=76661 .

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜