*中间层服务 WebService,编译DLL发布到IIS
DEFINE CLASS mywebbaseclass as Session
DataSession=2
databasename='mydatabase'
PROCEDURE Init()
SET ESCAPE OFF
set carr off
set mark to /
set century on
set date ymd
set hours to 24
set delete on
set talk off
set exact on
set status bar off
set safety off
set conf on
SET SYSMENU OFF
ENDPROC
PROCEDURE Destroy
ENDPROC
FUNCTION ConnectSQLServer() as Integer
LOCAL iConn as Integer
LOCAL connect_tmp as String
LOCAL cText as String
=SQLSETPROP(0,"DispLogin" ,3)
connect_tmp="Driver={SQL Server};Server=192.168.1.200;Address=192.168.1.200,1433;Network=dbmssocn;Uid=sa;Pwd=密码;" &&连接数据库服务器,假设数据库服务器IP 192.168.1.200
iConn=SQLSTRINGCONNECT(connect_tmp)
IF iConn=-1
cText='连接数据库失败'+chr(13)+chr(10)
strtofile(cText,'error.txt',.t.)
ELSE
= SQLSETPROP(iConn, 'Transactions', 2)
=SQLSETPROP(iConn, 'DisconnectRollback',.t.)
= SQLEXEC(iConn,"USE "+THIS.databasename)
ENDIF
RETURN iConn
ENDFUNC
PROCEDURE DisConnectSQLServer(iConn as Integer)
SQLDISCONNECT(iConn)
ENDPROC
PROCEDURE Error(nError as Integer,cMethod as String, nLine as Integer)
CLOSE DATABASES
=SQLDISCONNECT(0)
=SYS(1104)
LOCAL cText as String
cText=;
'出错时间:'+transform(datetime())+chr(13)+chr(10)+;
'错误代码:'+str(nError,4)+chr(13)+chr(10)+;
'错误提示:'+message()+chr(13)+chr(10)+;
'错误方法:'+cMethod+chr(13)+chr(10)+;
'错误行号:'+transform(nLine)+chr(13)+chr(10)
strtofile(cText,'error.txt',.t.)
comreturnerror("Fox Web Service",cText)
CLEAR ALL
ENDPROC
ENDDEFINE
DEFINE CLASS mywebservice as mywebbaseclass olepublic
FUNCTION EXECUTE_SQL (SQL_STR as string) as string &&执行客户端的SQL
IF EMPTY(SQL_STR)
RETURN ''
ENDIF
LOCAL cXML as String
LOCAL SQL_ERR AS Integer
LOCAL SQL_iConn AS Integer
LOCAL OUT_filename as String
cXML=''
SQL_iConn=THIS.ConnectSQLServer()
IF SQL_iConn<>-1
SQL_ERR=SQLEXEC(SQL_iConn,SQL_STR,'cursor_TMP')
IF SQL_ERR<>-1 AND USED('cursor_TMP')
CURSORTOXML('cursor_TMP','cXML')
cXML=STRCONV(cXML,13)
ENDIF
IF USED('cursor_TMP')
USE IN cursor_TMP
ENDIF
ENDIF
=this.DisConnectSQLServer(SQL_iConn)
RETURN cXML &&返回查询结果
ENDFUNC
ENDDEFINE
**************************************************************
*客户端
*关联中间层
loWS = NEWOBJECT("WSHandler","_ws3client.vcx")
oweb =loWS.SetupClient("http://192.168.1.244:8080/myseb/mywebservice.WSDL", "", "") &&假设中间层服务器IP: 192.168.1.244 IIS端口:8080
*执行SQL
xml_tmp=oweb.EXECUTE_SQL("select * from 表 where 查询条件") &&调用中间层的 EXECUTE_SQL() 执行SQL
xml_tmp=STRCONV(xml_tmp,14)
XMLTOCURSOR(xml_tmp,'cursor_TMP')
SELECT cursor_TMP
BROWSE
DEFINE CLASS mywebbaseclass as Session
DataSession=2
databasename='mydatabase'
PROCEDURE Init()
SET ESCAPE OFF
set carr off
set mark to /
set century on
set date ymd
set hours to 24
set delete on
set talk off
set exact on
set status bar off
set safety off
set conf on
SET SYSMENU OFF
ENDPROC
PROCEDURE Destroy
ENDPROC
FUNCTION ConnectSQLServer() as Integer
LOCAL iConn as Integer
LOCAL connect_tmp as String
LOCAL cText as String
=SQLSETPROP(0,"DispLogin" ,3)
connect_tmp="Driver={SQL Server};Server=192.168.1.200;Address=192.168.1.200,1433;Network=dbmssocn;Uid=sa;Pwd=密码;" &&连接数据库服务器,假设数据库服务器IP 192.168.1.200
iConn=SQLSTRINGCONNECT(connect_tmp)
IF iConn=-1
cText='连接数据库失败'+chr(13)+chr(10)
strtofile(cText,'error.txt',.t.)
ELSE
= SQLSETPROP(iConn, 'Transactions', 2)
=SQLSETPROP(iConn, 'DisconnectRollback',.t.)
= SQLEXEC(iConn,"USE "+THIS.databasename)
ENDIF
RETURN iConn
ENDFUNC
PROCEDURE DisConnectSQLServer(iConn as Integer)
SQLDISCONNECT(iConn)
ENDPROC
PROCEDURE Error(nError as Integer,cMethod as String, nLine as Integer)
CLOSE DATABASES
=SQLDISCONNECT(0)
=SYS(1104)
LOCAL cText as String
cText=;
'出错时间:'+transform(datetime())+chr(13)+chr(10)+;
'错误代码:'+str(nError,4)+chr(13)+chr(10)+;
'错误提示:'+message()+chr(13)+chr(10)+;
'错误方法:'+cMethod+chr(13)+chr(10)+;
'错误行号:'+transform(nLine)+chr(13)+chr(10)
strtofile(cText,'error.txt',.t.)
comreturnerror("Fox Web Service",cText)
CLEAR ALL
ENDPROC
ENDDEFINE
DEFINE CLASS mywebservice as mywebbaseclass olepublic
FUNCTION EXECUTE_SQL (SQL_STR as string) as string &&执行客户端的SQL
IF EMPTY(SQL_STR)
RETURN ''
ENDIF
LOCAL cXML as String
LOCAL SQL_ERR AS Integer
LOCAL SQL_iConn AS Integer
LOCAL OUT_filename as String
cXML=''
SQL_iConn=THIS.ConnectSQLServer()
IF SQL_iConn<>-1
SQL_ERR=SQLEXEC(SQL_iConn,SQL_STR,'cursor_TMP')
IF SQL_ERR<>-1 AND USED('cursor_TMP')
CURSORTOXML('cursor_TMP','cXML')
cXML=STRCONV(cXML,13)
ENDIF
IF USED('cursor_TMP')
USE IN cursor_TMP
ENDIF
ENDIF
=this.DisConnectSQLServer(SQL_iConn)
RETURN cXML &&返回查询结果
ENDFUNC
ENDDEFINE
**************************************************************
*客户端
*关联中间层
loWS = NEWOBJECT("WSHandler","_ws3client.vcx")
oweb =loWS.SetupClient("http://192.168.1.244:8080/myseb/mywebservice.WSDL", "", "") &&假设中间层服务器IP: 192.168.1.244 IIS端口:8080
*执行SQL
xml_tmp=oweb.EXECUTE_SQL("select * from 表 where 查询条件") &&调用中间层的 EXECUTE_SQL() 执行SQL
xml_tmp=STRCONV(xml_tmp,14)
XMLTOCURSOR(xml_tmp,'cursor_TMP')
SELECT cursor_TMP
BROWSE