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

    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???

Answers


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


Need Your Help

SimpleWeather jquery plugin

jquery asp.net

I'm playing with the SimpleWeather jquery plugin, on an asp.net page and its working fine.

Sockets and Processes in Java

java networking sockets blackberry

In Java, what would the best way be to have a constantly listening port open, and still send upon receipt of a packet. I am not particularly savvy with network programming at the moment, so the tut...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.