我有一个函数可以从下拉列表中选择所选数据库中包含主键的所有表的列表:
public void PrimaryKeyTable()
{
//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();
string selectPrimaryKeys = @"SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_TYPE = 'PRIMARY KEY'
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;
cmbResults.DataSource = dsListOfPrimaryKeys.Tables["INFORMATION_SCHEMA.TABLE_CONSTRAINTS"];
cmbResults.DisplayMember = "TABLE_NAME";
cmbResults.ValueMember = "TABLE_NAME";
}
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.Close();
}
}
}
现在我希望像这样按下这个功能:
private void btnStartAnalysis_Click(object sender, EventArgs e)
{
//This is the function call for the primary key checking in DB
PrimaryKeyTable();
}
它的工作正常,但是当我想在下拉按钮上调用它时,从下拉列表中选择特定文本,如下所示:
private void btnStartAnalysis_Click(object sender, EventArgs e)
{
//This is the function call for the primary key checking in DB
if(cmbOperations.SelectedText == "PrimaryKeyTables")
{
PrimaryKeyTable();
}
}
然后它没有给出任何结果......
有谁可以告诉我哪里出错?
答案 0 :(得分:4)
使用SelectedItem而不是SelectedText。然后使用ToString()来获取字符串值。
答案 1 :(得分:3)
我认为你应该替换
if(cmbOperations.SelectedText == "PrimaryKeyTables")
与
if((string)cmbOperations.SelectedValue == "PrimaryKeyTables")