We wrote a C# program to insert geometries in our Oracle spatial database.
We would like to insert new Geometries with the "adapter.update" method.
This code looks like this
Code: Select all
public void CreateOracleConnection()
{
String connectionString = "...";
OracleConnection myConn = new OracleConnection(connectionString);
OracleCommand cmd = new OracleCommand();
cmd.Connection = myConn;
cmd.CommandText = "SELECT * FROM geodbland";
OracleDataAdapter adapter = new OracleDataAdapter(cmd);
DataSet set = new DataSet();
adapter.Fill(set, "geodbland");
DataTable t = set.Tables["geodbland"];
DataRow r = t.NewRow();
OracleObject sdoObj;
OracleObject sdoPointObj;
OracleArray info;
OracleArray ordinates;
myConn.Open();
sdoObj = new OracleObject("MDSYS.SDO_GEOMETRY", myConn);
sdoPointObj = new OracleObject("MDSYS.SDO_POINT_TYPE", myConn);
info = new OracleArray("MDSYS.SDO_ELEM_INFO_ARRAY", myConn);
ordinates = new OracleArray("MDSYS.SDO_ORDINATE_ARRAY", myConn);
sdoObj["SDO_GTYPE"] = 2001;
sdoObj["SDO_SRID"] = null;
sdoObj["SDO_POINT"] = null;
info.Add("1");
info.Add("1");
info.Add("1");
sdoObj["SDO_ELEM_INFO"] = info;
ordinates.Add(15);
ordinates.Add(15);
sdoObj["SDO_ORDINATES"] = ordinates;
r["id"] = 14;
r["name"] = "test2";
r["geo"] = sdoObj;
t.Rows.Add(r);
OracleCommandBuilder builder = new OracleCommandBuilder(adapter);
((OracleDataAdapter)adapter).InsertCommand = ((OracleCommandBuilder)(builder)).GetInsertCommand();
adapter.Update(t);
/*
cmd.CommandText = "INSERT INTO geodbland VALUES (20,'test', :OBJ)";
cmd.Parameters.Add("OBJ", OracleDbType.Object).Value = sdoObj;
cmd.ExecuteNonQuery();
*/
myConn.Close();
}
The commended out part works fine.
What is the problem??
HvG