2013-12-12 2 views
0

Я пытаюсь загрузить имена баз данных и их имена таблиц в Windows Forms.Как загрузить базу данных и имена ее таблиц в C#

Я использую этот код, чтобы получить имена серверов в системе

private void ServerName() 
     { 
      try 
      { 

       DataTable dt = SmoApplication.EnumAvailableSqlServers(true); 
       if (dt.Rows.Count > 0) 
       { 
        foreach (DataRow dr in dt.Rows) 
        { 
         string serverName = dr[0].ToString(); 
         if (!serverName.Contains("\\SQLEXPRESS")) 
         { 
          serverName = serverName + "\\SQLEXPRESS"; 
         } 
         comboBox1.Items.Add(serverName); 
        } 
        comboBox1.Items.Add(@".\sqlexpress"); 
       } 
      } 
      catch (Exception) 
      { 
       MessageBox.Show("Problem In Fetching Server Information."); 
      } 

     } 

Я использую, чтобы загрузить базу данных имен этого конкретного сервера.

enter code here 

private void DBnames() 
     { 
      server = comboBox1.SelectedItem.ToString(); 
      database = "master"; 
      con = new SqlConnection(@"Data Source=" + server + ";Initial Catalog=" + database + ";Integrated Security=True;"); 
      con.Open(); 
      da = new SqlDataAdapter("SELECT name FROM sys.databases", con); 
      ds = new DataSet(); 
      da.Fill(ds); 
      for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
      { 
       comboBox2.Items.Add(ds.Tables[0].Rows[i][0]); 
      } 
      con.Close(); 
     } 

Теперь я хочу загрузить имена таблиц для этой базы данных

Я использую этот код

private void TBnames() 
     { 
      con.Open(); 
      da = new SqlDataAdapter("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'",con); 
      ds = new DataSet(); 
      da.Fill(ds); 
      for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
      { 
       comboBox3.Items.Add(ds.Tables[0].Rows[i][0]); 
      } 



      con.Close(); 

     } 

Но это не работает. Пожалуйста, помогите мне получить таблицы выбранной БД.

Заранее спасибо ..

Теперь я получил ответ ..

Просто измените код в TBnames:

private void TBnames() 
      { 
       con.Open(); 
       string s = comboBox2.Text; 
       // MessageBox.Show(s); 
       cmd = new SqlCommand("Use " + s, con); 
       cmd.ExecuteNonQuery(); 
       da = new SqlDataAdapter("SELECT * FROM sys.tables", con); 
       ds = new DataSet(); 
       da.Fill(ds); 
       //dataGridView1.DataSource = ds.Tables[0]; 
       for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
       { 
        comboBox3.Items.Add(ds.Tables[0].Rows[i][0]); 
       } 
       con.Close(); 
      } 

Он работает ..

+0

Что не работает? Получаете ли вы сообщение об ошибке? Исключение? Не возвращаете ли вы ожидаемые результаты (если вообще)? – Chris

+0

Он показывает проекты баз данных. Теперь я меняю код и работаю. –

ответ

Смежные вопросы