shenqdm
路人甲
路人甲
  • 注册日期2005-06-02
  • 发帖数5
  • QQ
  • 铜币120枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2310回复:6

sde二次开发

楼主#
更多 发布于:2006-08-03 14:34
有没有哪位高手用过sde的java api做过开发的。有没有资料可以提供。小弟刚开始做,一头雾水。谢谢
喜欢0 评分0
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-08-05 20:31
<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
shenqdm
路人甲
路人甲
  • 注册日期2005-06-02
  • 发帖数5
  • QQ
  • 铜币120枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
shenqdm
路人甲
路人甲
  • 注册日期2005-06-02
  • 发帖数5
  • QQ
  • 铜币120枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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" />
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2006-08-15 16:30
<P>第一列不是OID吧?</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
shenqdm
路人甲
路人甲
  • 注册日期2005-06-02
  • 发帖数5
  • QQ
  • 铜币120枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-08-22 15:06
sde在做insert等操作时候必须把表 unregister as versioned 才能做,sde 里有api可以实现unregister 和register吗?谢谢
举报 回复(0) 喜欢(0)     评分
hsghxm
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2006-08-25 11:58
<img src="images/post/smile/dvbbs/em06.gif" />
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
游客

返回顶部