我的表单上有2个组合框项目(comboBox2,ComboBox1) .

我正在尝试将我的数据库加载到comboBox2,然后根据所选项(数据库名称),ComboBox1显示该数据库中的表 .

当我加载我的表单时,我收到一个错误:

无法打开登录请求的数据库“System.Data.DataRowView” . 登录失败 . 用户登录失败 .

我可以在该错误上单击确定,但应用程序仍然可以正常工作 . 我可以删除我在消息框中捕获此错误的代码,但是当我加载表单时仍然会有20秒的延迟,这是不行的 .

我的comboBox2代码,它自动加载comboBox2中的数据库,如下所示:

private void Form1_Load(object sender, EventArgs e)
        {
            String stringConnection = @"Data Source=SERVER_NAME;Initial Catalog =DB_NAME; User ID =USER; Password =USER;";
            SqlConnection con2 = new SqlConnection(stringConnection);

            try
            {
                con2.Open();
                SqlCommand sqlCmd2 = new SqlCommand();
                sqlCmd2.Connection = con2;
                sqlCmd2.CommandType = CommandType.Text;
                sqlCmd2.CommandText = "SELECT name FROM sys.databases EXCEPT SELECT name FROM sys.databases WHERE name='master' OR name='model' OR name='msdb' OR name='tempdb' OR name=''";
                SqlDataAdapter sqlDataAdap2 = new SqlDataAdapter(sqlCmd2);
                DataTable dtRecord2 = new DataTable();
                sqlDataAdap2.Fill(dtRecord2);
                dtRecord2.DefaultView.Sort = "name ASC";
                comboBox2.DataSource = dtRecord2;
                comboBox2.DisplayMember = "NAME";
                comboBox2.DisplayMember = "NAME";
                con2.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selectedbase = this.comboBox2.GetItemText(this.comboBox2.SelectedItem);
            String strConnection = @"Data Source=SERVER_NAME;Initial Catalog =" + selectedbase+ "; User ID =user; Password =pass;";
            using (SqlConnection con = new SqlConnection(strConnection)) 
            try
            {
                con.Open();
                SqlCommand sqlCmd = new SqlCommand();
                sqlCmd.Connection = con;
                sqlCmd.CommandType = CommandType.Text;
                sqlCmd.CommandText = "Select table_name from information_schema.tables";
                SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);
                DataTable dtRecord = new DataTable();
                sqlDataAdap.Fill(dtRecord);
                dtRecord.DefaultView.Sort = "table_name ASC";
                ComboBox1.DataSource = dtRecord;
                ComboBox1.DisplayMember = "TABLE_NAME";
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

我的钱在字符串selectedbase上,用于连接字符串 . 但如果这确实是问题,我不知道如何解决它 .