我正在创建:

public DataTable CreateEmptyTableGeometryPoint(int srid)
{
    DataTable dt = new DataTable();

    SqlDataAdapter adapter = new SqlDataAdapter(
        string.Format("SELECT * FROM Geometry_Point_SRID_{0}",srid),
        connection);
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    adapter.FillSchema(dt, SchemaType.Source);

    return dt;
}


现在,我尝试了:

DataTable dtGeometry = dal.CreateEmptyTableGeometryPoint(srid);
DataRow rowGeometry = dtGeometry.NewRow();

rowGeometry["Geometry"] = SqlGeometry.Point(100.0, 300.0, srid);


我得到一个ArgumentException

为什么会出现此异常?有人能帮我吗?

最佳答案

DataRow rowGeometry = dtGeometry.NewRow()之后添加一个断点并检查您的架构。

仔细检查“几何”列的数据类型。它可能没有正确填写。

foreach(DataColumn column in rowGeometry.table.Columns)
{
    Console.WriteLine(column.DataType);
}

关于c# - SQL Server 2012几何-使用SqlDataAdapter加载架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12776833/

10-10 11:55