地理位置未保存为二进制

时间:2015-06-05 08:24:41

标签: sql asp.net sql-server-2008

我在ASP.net中使用以下查询来保存MS SQL中的坐标:

SqlCommand cmd = new SqlCommand
    ("Insert Into Properties (nPropertyId, vcCompleteAddress, vcPostCode,
      vcAddressLine1, vcAddressLine2, vcCity, vcCountry, dLatitude,
      dLongitude, gCoordinates, dtmDateAdded, vcUserName, nPropertyTypeId, imgImage
    ) Values(
      @nPropertyId, @vcCompleteAddress, @vcPostCode, @vcAddressLine1,
      @vcAddressLine2, @vcCity, @vcCountry, @dLatitude, @dLongitude,
     geography::STGeomFromText('POINT(" + txtLongitude.Text + " " + txtLatitude.Text + ")', 4326)**, 
      @dtmDateAdded, @vcUserName, @nPropertyTypeId, @imgImage)", conn);

但是,地理数据保存为: POINT(-2.270959 52.2323256)而不是二进制。我在这做错了什么?

感谢。

当我尝试将其作为参数传递给下面的代码时,我得到了将字符串转换为IEnumerable所需的错误。

SqlParameter param12 = new SqlParameter("@gCoordinates", SqlDbType.Udt);
param12.UdtTypeName = "geography";
param12.Value = txtLongitude.Text + " " + txtLatitude.Text;
cmd.Parameters.Add(param12);
param12.SqlDbType = SqlDbType.Structured;

1 个答案:

答案 0 :(得分:0)

我将纬度和经度保存为长数据类型而不是地理位置。它使事情变得更简单,一切都很完美。