Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据表中的c#地理列_C#_Sql Server_C# 4.0 - Fatal编程技术网

数据表中的c#地理列

数据表中的c#地理列,c#,sql-server,c#-4.0,C#,Sql Server,C# 4.0,我在c#中有一个数据表,我想添加一列以地理格式存储纬度和经度坐标,然后在sql server中进行批量复制。我应该以什么格式为此创建datacolumn?您能为我指点一下吗?每一列都应该是类似于十进制(9,6)的类型,其中长度为9,预测值为6。因此,允许最大值为180° 如果你真的想挑三拣四的话,其实也可以 纬度:十进制(8,6)(赤道以北/以南最大90°) 经度:十进制(9,6)(最大180°到-180°) C语言中的十进制格式# 。 编辑:按评论。如果要将它们组合在一起,则需要使用nvarc

我在c#中有一个数据表,我想添加一列以地理格式存储纬度和经度坐标,然后在sql server中进行批量复制。我应该以什么格式为此创建datacolumn?您能为我指点一下吗?

每一列都应该是类似于
十进制(9,6)
的类型,其中长度为
9
,预测值为
6
。因此,允许最大值为
180°

如果你真的想挑三拣四的话,其实也可以

纬度:
十进制(8,6)
(赤道以北/以南最大90°)

经度:
十进制(9,6)
(最大180°到-180°)

C语言中的十进制格式#


编辑:按评论。如果要将它们组合在一起,则需要使用
nvarchar(25)
(可以小于25,但留出空间进行格式复制)。至于确切的bulkcopy语句,您需要提供一个数据样本。

我们必须使用位于 “C:\Program Files(x86)\Microsoft SQL Server\100\SDK\Assembly\Microsoft.SqlServer.Types.dll”

之后,我们可以在datatable中创建列,存储一些数据,并通过bulkcopy成功地将它们发送到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);

嗨,尼科!我如何组合Lat的两列,以便通过bulkcopy将其存储在sql地理列中?
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);