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

问题描述 投票:0回答:1

我有一个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;
    }
}
c# sql sql-server sql-server-2008 geography
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.