SQL Server DataReader.GetField返回null而不是地理数据

时间:2019-04-02 03:32:21

标签: c# sql sql-server sql-server-2008 geography

我有一个Microsoft SQL Server 2008(SP3)数据库。我能够使用Geography数据类型将一些地理空间数据写入表中。

我现在正尝试从数据库中读取数据,但出现错误:

  

DataReader.GetField(2)返回null

数据列中当然有信息。

下面的代码很简单。我正在使用.NET Framework 4.7。有什么明显的我不在处理吗?

string sql = @"
    SELECT *
    FROM Locations
    WHERE LocID= " + tableOutput.OID.ToString();

System.Data.DataSet ds = Database.RequestData(sql);

static public System.Data.DataSet RequestData(string sql)
{
    System.Data.DataSet ds = null;
    try
    {
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlDataAdapter importer = new SqlDataAdapter(sql, conn))
            {
                ds = new System.Data.DataSet();
                importer.Fill(ds, "Data");
                return ds;
            }
        }
    }
    catch (Exception e)
    {
        Logger.Write(e.Message);
        return ds;
    }
}

1 个答案:

答案 0 :(得分:0)

我需要解决两件事:

首先从NuGet管理器中下载Microsoft.SqlServer.Types。

然后我需要手动将依赖项添加到根项目目录中的App.config中

  <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
  </dependentAssembly>