我在c#中有一个数据表,我希望在此之后添加一个列以将地理格式的纬度和经度坐标存储到sql server中的批量复制。我应该以什么格式为此创建数据列?你能指导我吗?
答案 0 :(得分:5)
我们必须使用位于下面的引用dll “C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.SqlServer.Types.dll”
using Microsoft.SqlServer.Types;
之后我们可以在datatable中创建列,存储一些数据并通过批量复制成功发送到sql server
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);
答案 1 :(得分:0)
每列应与Decimal(9,6)
类似,其中9
的长度和6
的精确度。因此允许最大值可以是180°
如果你想真正挑剔它实际上可能是。
纬度:Decimal(8,6)
(最大值为90°到0°北纬\赤道以南)
经度:Decimal(9,6)
(最大180°至-180°)
C#中的十进制格式
###.######
编辑:每条评论。如果您要将它们组合在一起,则需要使用nvarchar(25)
(可能小于25,但会留下复制格式的空间)。至于确切的批量复制声明,您需要提供数据样本。