【问题标题】:SQL Server DataReader.GetField returned null instead of geography dataSQL Server DataReader.GetField 返回 null 而不是地理数据
【发布时间】:2019-08-23 07:07:12
【问题描述】:

我有一个 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】:

我需要做两件事来解决这个问题:

首先从 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>

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2020-07-15
    • 1970-01-01
    相关资源
    最近更新 更多