public DB2SpatialExtenderExpressionTreeToSqlCompiler(DB2SpatialExtenderProvider <TOid> provider, Expression query ) : base(provider, query) { }
public static void CreateDataTable <TOid>( FeatureDataTable featureDataTable, String tableName, String connectionString, String geometryColumnName, OgcGeometryType geometryType, Double smallRasterSize, Double mediumRasterSize, Double largeRasterSize ) { DB2Connection conn = new DB2Connection(connectionString); if (conn.State == ConnectionState.Closed) { conn.Open(); } string srid = featureDataTable.GeometryFactory.Srid ?? DefaultSrid; if (conn != null) { try { string createTableClause = string.Format("CREATE TABLE \"{0}\".\"{1}\" ({2});", DefaultSpatialSchema, tableName, ColumnsClause(featureDataTable.Columns, featureDataTable.Constraints)); new DB2Command(createTableClause, conn).ExecuteNonQuery(); new DB2Command(string.Format("ALTER TABLE \"{0}\".\"{1}\" ADD COLUMN \"{2}\" \"{0}\".{3};", DefaultSpatialSchema, tableName, geometryColumnName, ToDb2GeometryType(geometryType)), conn).ExecuteNonQuery(); Object db2crsname = new DB2Command(String.Format( @"SELECT DISTINCT SPATIAL_REF_SYS.CS_NAME FROM ""{0}"".""SPATIAL_REF_SYS"" AS SPATIAL_REF_SYS WHERE SPATIAL_REF_SYS.AUTH_SRID = {1};", DefaultSpatialSchema, srid), conn).ExecuteScalar(); if (db2crsname == null || db2crsname == DBNull.Value || ((String)db2crsname).Length == 0) { db2crsname = "DEFAULT_SRS"; } //register spatial column DB2Command cmd = new DB2Command(String.Format("CALL \"{0}\".ST_REGISTER_SPATIAL_COLUMN(?,?,?,?,?,?);", DefaultSpatialSchema), conn); //cmd.CommandType = CommandType.StoredProcedure; //input parameters //DB2Parameter par; DB2Parameter par1 = cmd.Parameters.Add(new DB2Parameter("@P1", DB2Type.VarChar, 130)); par1.Value = "\"" + DefaultSpatialSchema + "\""; DB2Parameter par2 = cmd.Parameters.Add(new DB2Parameter("@P2", DB2Type.VarChar, 130)); par2.Value = "\"" + tableName + "\""; DB2Parameter par3 = cmd.Parameters.Add(new DB2Parameter("@P3", DB2Type.VarChar, 130)); par3.Value = "\"" + geometryColumnName + "\""; DB2Parameter par4 = cmd.Parameters.Add(new DB2Parameter("@P4", DB2Type.VarChar, 130)); par4.Value = "\"" + db2crsname + "\""; //output parameters DB2Parameter par5 = cmd.Parameters.Add(new DB2Parameter("@P5", DB2Type.Integer, 4)); par5.Direction = ParameterDirection.Output; DB2Parameter par6 = cmd.Parameters.Add(new DB2Parameter("@P6", DB2Type.VarChar, 1024)); par6.Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); if (smallRasterSize != -1d) { //adding spatial index new DB2Command( String.Format( "CREATE INDEX \"{0}\".\"idx_{1}_{2}\" ON \"{0}\".\"{1}\"(\"{2}\") EXTEND USING \"{0}\".({3}, {4}, {5});", DefaultSpatialSchema, tableName, geometryColumnName, smallRasterSize, mediumRasterSize, largeRasterSize), conn).ExecuteNonQuery(); } } catch (DB2Exception ex) { Trace.Write(ex.Message); //throw new DB2SpatialExtenderException(string.Format("Cannot create geometry column with type of '{0}'", geometryType.ToString())); } catch { } } conn.Close(); conn = null; DB2SpatialExtenderProvider <TOid> prov = new DB2SpatialExtenderProvider <TOid>( featureDataTable.GeometryFactory, connectionString, DefaultSpatialSchema, tableName, featureDataTable.Columns[0].ColumnName, geometryColumnName); prov.Insert(featureDataTable); return; }