Как заполнить DATASET в таблицах из DATABASE C # - PullRequest
0 голосов
/ 12 февраля 2019

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

public DataSet SelectDset()
        {
            try
            {
                string str = "SELECT * FROM Information_Schema.Tables";
                ds = new DataSet();
                Open();
                cmd = new SqlCommand(str, con);
                da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                da.Dispose();
                cmd.Dispose();
                Close();
                return ds;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                Close();
            }
        }

1 Ответ

0 голосов
/ 12 марта 2019

Во-первых, этот запрос "SELECT * FROM Information_Schema.Tables" будет только получать список таблиц и представлений в базе данных, но не извлекает записи в таблицах.Чтобы ограничить его извлечением только базовых типов таблиц, вам нужно будет включить предложение WHERE, как показано ниже.

Во-вторых, чтобы извлечь все записи в таблицах, вам придется пройтись по списку таблиц и построитьзапросы для извлечения записей (строк)

Вы можете попробовать это

    public DataSet SelectDset()
    {
        DataTable dtTablesNames=new DataTable();      
        try
        {
            Open();
            //get the list of tables in the database into a DataTable
            sTablesNamesQuery="SELECT TABLE_NAME FROM INFORMATION_SCHEMA.Tables WHERE TABLE_TYPE = 'BASE TABLE' Order by TABLE_NAME";
            SqlDataAdapter sda1 = new SqlDataAdapter(sTablesNamesQuery, con);
            sda1.Fill(dtTablesNames);
            //               
            DataSet dsAllTables = new DataSet();
            StringBuilder sbQuery = "";
            //build the queries that will be used to retrieve the tables rows
            foreach (DataRow dr in dtTablesNames.Rows)
            {
                sbQuery.Append("SELECT * FROM " + dr["TABLE_NAME"].ToString()+";");                    
            }
            //
            SqlDataAdapter sda2 = new SqlDataAdapter(sbQuery, con);
            sda2.Fill(dsAllTables);
            sda1.Dispose();
            sda2.Dispose();
            Close();
            return dsAllTables;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...