2008-12-20 2 views
0

Как я могу получить DataSet со всеми данными с сервера SQL Express с помощью C#?Получение набора данных с сервера SQL Express C#

Благодаря

редактировать: Для того, чтобы уточнить, я хочу, чтобы все данные из каждой таблицы. Причиной этого является то, что это относительно небольшая база данных. Раньше я хранили все три таблицы в XML-файле, используя способности DataSet. Однако я хочу перенести его в базу данных.

+0

Э-э, извините, но ваше редактирование не имеет смысла. Вы хотите получить данные * из * базы данных или * в * базу данных? –

+0

Из-за этого я могу вернуть его, но чем больше я думаю об этом, тем меньше это возможно. – Malfist

+0

Хорошо, тогда это ваш звонок, потому что я считаю, что вы дали нам слишком мало информации, чтобы ответить на ваш вопрос. Поскольку это то, что вы решили сделать, только вы можете узнать реальный ответ на свой вопрос. –

ответ

2

Вы можете использовать метод GetSchema для получения всех таблиц в базе данных, а затем использовать адаптер данных для заполнения набора данных. Что-то вроде этого (я не знаю, если он компилирует, я просто вставить код и изменить его немного):

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient"); 

DataTable tables = null; 
DataSet database = new DataSet(); 

using (DbConnection connection = factory.CreateConnection()) 
{ 

    connection.ConnectionString = "Data Source=(local);Initial Catalog=Northwind;Integrated Security=True"; 

    string[] restrictions = new string[4]; 

    // Catalog 
    restrictions[0] = "Northwind"; 

    // Owner 
    restrictions[1] = "dbo"; 

    // Table - We want all, so null 
    restrictions[2] = null; 

    // Table Type - Only tables and not views 
    restrictions[3] = "BASE TABLE"; 

    connection.Open(); 

    // Here is my list of tables 
    tables = connection.GetSchema("Tables", restrictions); 

    // fill the dataset with the table data 
    foreach (DataRow table in tables.Rows) 
    { 

     string tableName = table["TABLE_NAME"].ToString(); 

     DbDataAdapter adapter = factory.CreateDataAdapter(); 
     DbCommand command = factory.CreateCommand(); 
     command.Connection = connection; 
     command.CommandType = CommandType.Text; 
     command.CommandText = "select * from [" + tableName + "]"; 
     adapter.SelectCommand = command; 
     adapter.Fill(database, tableName); 

    } 

} 

EDIT:

Теперь я реструктурировать это немного, и теперь он работает как это должно. Использование DbConnection и DbProviderFactories для абстракции двигателя базы данных, я рекомендую использовать его, чтобы вы могли изменить движок базы данных, изменяя эту строку и строку соединения:

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient"); 

метод GetSchema будет retrive всех таблиц из базы данных к DataTable, а затем мы получаем все данные из каждой таблицы в DataSet с помощью DataAdapter.

+0

Не могли бы вы объяснить этот подход еще немного? Благодарю. – Malfist

+0

Это сработало, за исключением того, что вам нужно было открыть соединение и преобразовать DbConnection в SqlConnection, достаточно просто, спасибо за вашу помощь. – Malfist

2

Я думаю, вам нужно сузить вопрос несколько ... Все данные? Вы имеете в виду все данные в каждой таблице в каждой базе данных? Ну, единственный ответ на этот вопрос: много кода.

Чтобы подключиться и поговорить с двигателем базы данных SQL Server Express, использовать классы в пространстве имен System.Data.SqlClient, а именно:

  • SqlConnection: Подключение к базе данных
  • SqlCommand: Поговорите база данных
  • SqlDataReader: перебрать данных, извлекаемых из базы данных

Вы можете проверить страницы MSDN для всех из se, нажав на ссылки выше.

Вот некоторые обзорные-ссылки с дополнительной информацией:

Обратите внимание, что по большому счету, вы используете ядро ​​базы данных SQL Server Express точно так же, как полный продукт SQL Server, разница больше в инструментах, которые вы получаете с ним, и некоторые ограничения в экспресс-движке. Помимо этого вы можете просто использовать классы и язык, которые будут использоваться для нормальной установки ядра базы данных SQL Server.

Если этот пост не ответил на ваш вопрос, пожалуйста, уточните, и у вас есть более высокий шанс получить ответ, который вы ищете.

0

Это можно сделать, используя класс dataAdapter.

+0

Для этого требуется инструкция SQL, хотя я хочу, чтобы все таблицы из базы данных – Malfist