2014-01-09 5 views
1

У меня есть datatable в C#, и я хочу добавить столбец для хранения координат широты и долготы в формате географии в bulkcopy на сервере sql после этого. В каком формате я должен создать datacolumn для этого? Можете ли вы мне посоветовать?C# география столбец в datatable

ответ

3

Мы должны использовать справочную библиотеку DLL, которая находится под "C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ SDK \ Сборки \ Microsoft.SqlServer.Types.dll"

using Microsoft.SqlServer.Types; 

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

DataTable dataTable = new DataTable(); 
dataTable.Columns.Add("Geom", typeof(SqlGeometry)); 

DataRow newRow = datatable.NewRow(); 
newRow["Geom"] = SqlGeometry.Point(lat, lon, 4326); 

datatable.Rows.Add(newRow); 

SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection); 
sqlBulkCopy.DestinationTableName = "MySpatialDataTable"; 
sqlBulkCopy.WriteToServer(dataTable); 
0

Каждая колонна должна иметь аналогичный тип Decimal(9,6), где у вас есть длина 9 и предел 6. Таким образом, максимальное значение может быть 180°

Если вы хотите получить действительно придирчивый, это на самом деле может быть.

Широта: Decimal(8,6) (макс 90 ° до 0 северов \ юга от экватора)

Долгота: Decimal(9,6) (макс 180 ° до -180 °)

десятичного формат в C#

###.######

Редактировать: Для комментариев. Если вы должны были объединить их вместе, вам нужно будет использовать nvarchar(25) (может быть меньше 25, но оставляет место для копирования с форматированием). Что касается точного выражения объемной копии, вам необходимо предоставить образец данных.

+0

Привет Нико! И как я могу объединить два столбца Lat, Long, чтобы сохранить их в столбце географии sql через bulkcopy? – George

+0

@George обновленный вопрос за комментарий. – Nico

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