阅读:2310回复:6
sde二次开发
有没有哪位高手用过sde的java api做过开发的。有没有资料可以提供。小弟刚开始做,一头雾水。谢谢
|
|
1楼#
发布于:2006-08-05 20:31
<img src="images/post/smile/dvbbs/em01.gif" />
|
|
2楼#
发布于:2006-08-14 09:48
<P>现在可以连上,也可以查询数据,但插入的时候还是抛出异常:不知道是为什么,哪位高人可以帮忙:)</P>
<P>每次在执行到:row.setInteger(6,in);<BR>就抛出异常:Ljava.lang.stackTraceElement;@18F51F</P> <P>我是用oracle数据库的。操作表的第一列是number型。我发现string型的就没有这个异常。但number型的就这样</P> <P>package com.sde;</P> <P>import java.io.IOException;<BR>import java.util.Calendar;<BR>import java.util.Date;</P> <P>import com.esri.mo.file.shp.Shape;<BR>import com.esri.sde.sdk.client.SDEPoint;<BR>import com.esri.sde.sdk.client.SeColumnDefinition;<BR>import com.esri.sde.sdk.client.SeConnection;<BR>import com.esri.sde.sdk.client.SeCoordinateReference;<BR>import com.esri.sde.sdk.client.SeException;<BR>import com.esri.sde.sdk.client.SeInsert;<BR>import com.esri.sde.sdk.client.SeLayer;<BR>import com.esri.sde.sdk.client.SeQuery;<BR>import com.esri.sde.sdk.client.SeRow;<BR>//import com.esri.sde.sdk.client.SeRow;<BR>import com.esri.sde.sdk.client.SeShape;<BR>import com.esri.sde.sdk.client.SeSqlConstruct;<BR>import com.esri.sde.sdk.client.SeTable;<BR>import com.esri.sde.sdk.geom.Geometry;<BR>import com.sun.rowset.internal.Row;</P> <P>public class conn {<BR> private String server = "smti";<BR> private int instance = 5151;<BR> private String database="";<BR> private String user="yysde";<BR> private String password = "yysde";<BR> public void con() throws SeException<BR> {<BR> try{<BR> System.out.println("----11----");<BR> String[] cols = new String[2];<BR> //SeConnection c = new SeConnection();<BR> SeConnection conn=new SeConnection(server, instance, database,user, password);<BR> System.out.println("--2--");<BR> SeLayer layer = new SeLayer(conn,"ZYDW_POT","SHAPE");<BR> //SeLayer layer = new SeLayer(conn);<BR> //layer.setTableName("ZYSW_POT");<BR> SeSqlConstruct sqlConstruct = new SeSqlConstruct( layer.getName() );<BR> System.out.println("--45--"); <BR> cols[0]="OBJECTID";<BR> cols[1]=layer.getSpatialColumn();<BR> SeQuery query = new SeQuery( conn, cols, sqlConstruct );<BR> System.out.println("--47--"+query.getNumColumns()); <BR> query.prepareQuery();<BR> query.execute();<BR> SeRow row = query.fetch();<BR> String name = row.getInteger(0).toString();<BR> SeShape geom = (SeShape) row.getShape(1);</P> <P> query.close();<BR> <BR> //insert<BR> SeTable table = new SeTable(conn, layer.getName());<BR> SeColumnDefinition[] colDefs = table.describe();<BR> int iNoOfCol = colDefs.length;<BR> String columns[] = new String[iNoOfCol]; </P> <P> for (int i = 0; i < iNoOfCol; i++) {<BR> columns = new String(colDefs.getName());<BR> System.out.println("columns[" + i + "]:[" + columns + "]");<BR> }<BR> <BR> SeCoordinateReference coordref = layer.getCoordRef();<BR> coordref.setXY(-140,37,10);<BR> SeInsert insert = new SeInsert(conn);</P> <P> insert.intoTable(layer.getName(), columns);<BR> insert.setWriteMode(true);<BR> SeShape point = new SeShape(coordref);<BR> int numPts = 1;<BR> SDEPoint[] ptArray = new SDEPoint[numPts];<BR> ptArray = new SDEPoint[numPts]; <BR> ptArray[0] = new SDEPoint(-140, 37); <BR> row = insert.getRowToSet();<BR> int num = insert.getNumColumns();<BR><BR> String str = "191";<BR> Integer in = new Integer("191"); <BR> Short sh = 600;<BR> SeColumnDefinition seColumnDefinition = null;<BR> <BR> seColumnDefinition = row.getColumnDef(0);<BR> switch (seColumnDefinition.getType()) {<BR> case SeColumnDefinition.TYPE_INTEGER: {<BR> System.out.println("--swich--");<BR> row.setInteger(6,in);<BR> break;<BR> }</P> <P> case SeColumnDefinition.TYPE_SMALLINT: {<BR> <BR> row.setShort(0, sh);<BR> </P> <P> break;<BR> }<BR> }</P> <P> <BR> row.setShort(0,sh);</P> <P> row.setString(2, "asfas");<BR> //row.getColumnDef(0).TYPE_INTEGER;<BR> row.setShape(6, point);<BR> insert.execute();<BR> System.out.println("sucessful");<BR> insert.close();</P> <P><BR> }<BR> catch(SeException e)<BR> {<BR> System.out.println("--e--"+e.getMessage().toString()+"--"+e.getStackTrace().toString());<BR> }<BR> <BR> }<BR> <BR> <BR> public void main(String[] args) throws SeException<BR> {<BR> conn c = new conn();<BR> c.con();<BR> }</P> <P>}<BR></P> |
|
3楼#
发布于:2006-08-15 12:37
<img src="images/post/smile/dvbbs/em08.gif" />+<img src="images/post/smile/dvbbs/em08.gif" />=<img src="images/post/smile/dvbbs/em07.gif" />
|
|
4楼#
发布于:2006-08-15 16:30
<P>第一列不是OID吧?</P>
|
|
|
5楼#
发布于:2006-08-22 15:06
sde在做insert等操作时候必须把表 unregister as versioned 才能做,sde 里有api可以实现unregister 和register吗?谢谢
|
|
6楼#
发布于:2006-08-25 11:58
<img src="images/post/smile/dvbbs/em06.gif" />
|
|
|