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 .
精彩评论