Потребность получить пустую таблицу данных в .NET со схемой таблицы базы данных

Что лучший способ состоит в том, чтобы создать Пустой Объект dataTable со схемой таблицы SQL-сервера?

18
задан Ronnie Overby 24 February 2010 в 13:42
поделиться

5 ответов

Я думаю, что стоит упомянуть оператор SET FMTONLY :

SET FMTONLY ON;
SELECT * FROM SomeTable
SET FMTONLY OFF;

Никакие строки не обрабатываются и не отправляются клиенту из-за запроса, когда SET FMTONLY включен.

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

10
ответ дан 30 November 2019 в 07:03
поделиться

Вот что я сделал:

var conn = new SqlConnection("someConnString");
var cmd = new SqlCommand("SET FMTONLY ON; SELECT * FROM MyTable; SET FMTONLY OFF;",conn); 
var dt = new DataTable();
conn.Open();
dt.Load(cmd.ExecuteReader());
conn.Dispose();

Работает хорошо. Спасибо, AdaTheDev.

2
ответ дан 30 November 2019 в 07:03
поделиться

Попробуйте: ВЫБЕРИТЕ TOP 0 * FROM [TableName]

и используйте SQLDataAdapter для заполнения DataSet, затем получите таблицу из этого DataSet.

9
ответ дан 30 November 2019 в 07:03
поделиться

Вы всегда можете создать свой собственный:

        DataTable table = new DataTable("TableName");

        table.Columns.Add(new DataColumn("Col1", typeof(int)));
        table.Columns.Add(new DataColumn("Col2", typeof(int)));
        table.Columns.Add(new DataColumn("Col3", typeof(string)));
        table.Columns.Add(new DataColumn("Col4", typeof(int)));
        table.Columns.Add(new DataColumn("Col5", typeof(string)));

Очевидным недостатком является то, что вам придется обновлять свой код при каждом изменении схемы базы данных.

-1
ответ дан 30 November 2019 в 07:03
поделиться

Предполагая, что вы можете подключиться к базе данных SQL, которая содержит таблицу, которую вы хотите скопировать, в тот момент, когда вы хотите это сделать, вы можете использовать обычное преобразование набора результатов в таблицу данных с использованием

select * from <tablename> where 1=2

в качестве исходного запроса.

Это вернет пустой набор результатов со структурой исходной таблицы.

4
ответ дан 30 November 2019 в 07:03
поделиться