zoukankan
html css js c++ java
ArcSDE C API在.NET中的调用
在.NET中调用API函数
C#:
using
System.Runtime.InteropServices;
[DllImport(
"
sde.dll
"
)]
//
还有其他的属性可参考MSDN
public
static
extern
Int32 SE_connection_create(
string
server,
string
instance,
string
database,
string
username,
string
pwd,
ref
SE_ERROR error,
out
IntPtr pSdeConn);
VB.NET:
Imports
System.Runtime.InteropServices
<
DllImport(
"
sde.dll
"
, SetLastError:
=
True
, ThrowOnUnmappableChar:
=
True
)
>
_
Public
Shared
Function SE_connection_create()
Function
SE_connection_create(
ByVal
server
As
String
,
ByVal
instance
As
String
,
ByVal
database
As
String
,
ByVal
username
As
String
,
ByVal
password
As
String
,
ByRef
error1
As
SE_ERROR,
ByRef
connection
As
IntPtr)
As
Int32
End Function
还可以使用Declar关键字来引用API函数,这里就不介绍了。
ArcSDE C API的声明方法
'--------------↓声明SE_ERROR结构体↓-----------------
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
Public Structure SE_ERROR
Public sde_error As Int32
Public ext_error As Int32
'<MarshalAs(UnmanagedType.ByValArray, SizeConst:=512)> _
Public err_msg1 As Char()
'<MarshalAs(UnmanagedType.ByValArray, SizeConst:=4096)> _
Public err_msg2 As Char()
End Structure
'--------------↑声明SE_ERROR结构体↑-----------------
'-------------------调用SE_connection_create函数----------------------
'------------------连接SDE-------------------------
'返回结果
'SE_SUCCESS 0
'SE_FAILURE -1
'SE_NO_ACCESS -15
'SE_SDE_NOT_STARTED -5
'SE_IOMGR_NOT_AVAILABLE -101
'SE_INVALID_DATABASE -162
'SE_INVALID_SERVER -100
'SE_INVALID_POINTER -65
'SE_INVALID_USER -9
'SE_LOGIN_NOT_ALLOWED -8
'SE_DBMS_DOES_NOT_SUPPORT -1008
'SE_NET_FAILURE -10
'SE_NET_TIMEOUT -11
'SE_SERVICE_NOT_FOUND -102
'SE_TASKS_EXCEEDED -7
<DllImport("sde.dll", SetLastError:=True,ThrowOnUnmappableChar:=True)> _
Public Shared Function SE_connection_create(ByVal server As String, ByVal instance As String, _
ByVal database As String, ByVal username As String, ByVal password As String, ByRef error1 As SE_ERROR, _
ByRef connection As IntPtr) As Int32
End Function
'----------------------------调用SE_connection_free函数-------------------------
'----------------------------释放SDE连接----------------------
<DllImport("sde.dll", SetLastError:=True, ThrowOnUnmappableChar:=True)> _
Public Shared Sub SE_connection_free(ByVal Byrefconnection As IntPtr)
End Sub
在程序中的调用
Imports QHProject.SDE_C_API
Imports System.Runtime.InteropServices
Partial Class MapServicePage
Inherits System.Web.UI.Page
Private Shared conn As IntPtr = Nothing
Private error1 As QHProject.SDE_C_API.SDE_C_API_Operation.SE_ERROR = Nothing
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Int32 = SDE_C_API_Operation.SE_connection_create("CL", "5151", "sde", "sde", "clbeyond", error1, conn)
Button1.Text = i.ToString()
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
SDE_C_API_Operation.SE_connection_free(conn)
End Sub
End Class
连接成功后Button的Text属性会显示为0,表示连接成功,在任务管理器中就会发现出现了一个gsrvr.ext进程。断开连接后gsrvr.exe进程就会消失。
当然前提是要在程序中将连接字段conn声明为shared类型(C#中的Static类型)。
需要注意的是Instance不是"esri_sde",而是端口号,一般为5151。
2008年3月10日15:41:31
查看全文
相关阅读:
JavaScript内置对象String对象下常用的方法
JavaScript内置对象String对象
JavaScript内置对象Math产生一个16进制的随机颜色值
JavaScript内置对象Math查询一组数中的最大值
JavaScript内置对象Date常用方法总结
JavaScript内置对象Date常用函数
JavaScript内置对象Date----格式化时间
C++学习笔记30:模板与型式参数化
C++学习笔记29:运行期型式信息2
C++学习笔记28:运行期型式信息
原文地址:https://www.cnblogs.com/danni5678/p/1098854.html
最新文章
Coordinate System
Director Scene Layer and Sprite
Chapter 6
Chapter 4
2013-07-30
cocos2d-x 2.0.3 设置高清模式注意事项(已移除-hd方式)
内存管理
【ybt金牌导航4-3-5】【luogu P3369】普通平衡树(Splay 做法)
【ybt金牌导航4-2-4】【luogu P4148】简单题
【ybt金牌导航4-2-3】【luogu P4357】K远点对
热门文章
【ybt金牌导航4-2-1】【luogu P4169】[Violet]天使玩偶 / SJY摆棋子(K-D tree 模板)
【ybt金牌导航4-1-4】【luogu P3261】城池攻占
【ybt金牌导航3-6-5】【luogu P3209】平面图 / 平面图判定
【ybt金牌导航3-4-4】【luogu UVA1104】放置棋子 / 芯片难题 Chips Challenge
【ybt金牌导航3-2-4】【luogu P5038】奇怪游戏 / 奇怪的游戏
【luogu P2764】【LOJ 6002】最小路径覆盖问题
【luogu P3804】【模板】后缀自动机 (SAM)
JavaScript中的基本包装类
JavaScript内置对象Array对象
JavaScript内置对象String对象,字符串案例
Copyright © 2011-2022 走看看