使用Http通道远程连接数据库技术说明.docx
《使用Http通道远程连接数据库技术说明.docx》由会员分享,可在线阅读,更多相关《使用Http通道远程连接数据库技术说明.docx(55页珍藏版)》请在冰豆网上搜索。
使用Http通道远程连接数据库技术说明
数据库Http远程连接技术说明
7/28/2013
本人通过半年的努力,开发完成了此项技术
在当前流行的web浏览模式的情况下,仍然需要对客户端的个性化体验以及大批量数据的处理采用非web模式。
数据库Http连接技术打包封装了internet数据库操作的各项功能,采用多层防护保护数据库,同时客户端兼容数据库局域网操作的adodb方式,可以满足internet大批量数据传送以及客户端个性化开发的要求。
一、数据库Http远程连接技术实现功能:
1.用户能够像使用局域网数据库一样操作internet数据库。
(适用各类数据库,如mysql,mssqlserver,access等)
2.数据库在internet上是屏蔽的,他是通过IIS服务,采用特定的Http管道与用户端建立连接。
多道防护可以有效保障数据库的安全性。
3.数据的发送接受采用分段技术,以整体虚拟,所需为实的方式满足用户的数据需求,适应了internet通讯的复杂环境。
4.用户的局域网操作和internet操作集成在一起,以同一个组件和同样的指令实现,可以在2种操作之间随时切换。
5.服务端提供了aspx二次开发的接口。
6.现有的C/S结构软件,使用数据库Http连接模块,可以增加internet操作功能。
二、与webservice的关系(数据库Http远程连接技术简称Dbnet)
相同点:
都是基于netframework以及IIS的架构,通过http通道实现数据通讯。
区别:
1.Webservice以XML数据格式传送数据,具有通用标准,但数据的冗余度较大;Dbnet
采用特定的数据结构,以stream的方法传送数据,数据较为精简。
2.Webservice传送的是数据实体,Dbnet在数据量大的时候可以采用数据对象的虚拟
化来传送数据(即传送数据对象的部分数据,但用户看到的是整个数据对象)。
3.Webservice没有对数据库的操作功能有专门的定制;Dbnet定制了数据库操作的各
项功能,用户端可以直接调用,同时还兼容adodb的局域网数据库的操作方法。
4.客户端使用Webservice,引用的是Webservice对象,需进行编译;客户端使用DBnet组件对象,引用的是网址,不需要编译。
三、DBnet组件的主要对象(数据库Http远程连接技术简称Dbnet)
主要对象
功能与描述
Hpserver
运行在服务器iis上,米用Http协议,为远程用户与本地数据库建立起通讯连接。
以aspx程序引用Hpserve对象,客户端访冋aspx页面,头现相互通讯。
DatabaseEx
操作功能可类似于adodb.connection
使用在客户端。
数据库连接对象,可以连接局域网数据库,也可以与web服务上的aspx页面,从而访问internet数据库。
RecordsetEx
操作功能可类似于adodb.recordset,不能对数据集编辑。
使用在客户端。
以DatabaseEx对象查询数据库,得到RecordsetEx记录集对象,数据集只读不能编辑。
RecordsetByteOpt
操作功能可类似于adodb.recordset,可以对数据集编辑。
使用在客户端。
以DatabaseEx对象查询数据库,得到RecordsetByteOpt记录集对象。
可以对该记录集进行新增,修改。
处于internet通讯时,对含有大数据子段(image,bytes)
的记录集需要采用小批量数据传送方式,用此对象获得。
HpFields
记录集所有字段的属性定义容器。
HpException
异常处理类,继续S.webException异常类
HpServer对象
运行在服务器iis上,采用Http协议,为远程用户与本地数据库建立起通讯连接以aspx程序引用Hpserve对象,客户端访问aspx页面,实现相互通讯。
属性
属性名称
类型
描述
BatchTraceTimeOut_millSecond
integer
客户端在执行数据库事务中,服务器等待客户端的响应时间,超过此数值,批处理事务失效(防止网络通讯产生异常),默认2分钟。
单位:
毫秒。
Connectionstring
String
与数据库连接的字符串。
字符串设置与ADODB.ConnectionString设置类似。
Connection
ADODB.Connection
只读,返回ADODB.Connection对象
CompressedData
integer
与客户端internet通讯时,是否采用数据压缩,以便减少数据流量。
默认是不压缩。
0:
不压缩;1:
压缩。
CommandTimeout_second
integer
数据库命令超时时间。
单位:
秒
ConnectTimeout_second
integer
数据库连接超时时间。
单位:
秒
CursorLocationType
ADODB.CursorLocationEnum
枚举
数据库记录集的位置类型。
默认CursorLocationEnum.adUseServer
DefaultOneSendRecordCount_Comm
integer
对于普通记录集,单次向客户端发送的记录数量。
最小10
DefaultOneSendRecordCount_Bytes
integer
对于含字段(bytes(),image)的大容量数据的记录集,单次向客户
端发送的记录数量。
最小3
DefaultRecordCacheSize_Comm
integer
打开普通记录集,一次读到内存中的记录数量
DefaultRecordCacheSize_Bytes
integer
打开含字段(bytes(),image)的大容量数据的记录集,一次读到内
存中的记录数量
InternetUserPort
String
1.与客户端通讯的接口号,客户端的UserPort须与服务端的
UserPort一致,才能连接。
2.接口号字符串最多12位,英文字母或者数字,只能在ASCII码范畴内。
IsClientLoginOk
Boolean
用户端的登录信息是否通过验证。
默认:
true;不需要做自定义的验证。
如果设定false;服务端可
以调用事件ClientLogin,开发自定义验证函数。
确认OK再把IsClientLoginOk设定true。
IsEndTrans
Boolean
数据库事务状态。
False:
事务在进行中;True:
事物不在运行。
IsShowErrToFile
Boolean
异常是否写入日志文件。
默认:
False
IsShowErrMsgBox
Boolean
异常是否弹出消息框。
默认:
False
属性名称
类型
描述
LinkDbType
emDbLinkType
枚举
连接的数据库类型。
emDbLinkType枚举类:
SqIServerUsing=0OdbcUsing=1
AccessUsing=2OracleUsing=3
MySqlUsing=4
LogFilePath
String
日志文件路径
LogFileName
String
日志文件名称
State
ADODB.ObjectStateEnum
枚举
当前与数据库联络的状态。
i
方法
方法名称
特征
描述
RunClientRequest
功能
启动客户端应答程序
语法
FunctionRunClientRequest(ByValobjRequestAsSystem.Web.HttpRequest,ByValobjResponseAs
System.Web.HttpResponse)AsBoolean
参数
objRequest:
收到客户端信息的HttpRequest对象objResponse:
向客户端发送信息的HttpResponse对象
返回
True:
执行成功
Flase:
执行失败
OpenConn
功能
使用已经设置的连接字符串,连接数据库。
语法
FunctionOpenConn()AsBoolean
参数
返回
1.True:
数据库连接成功
2.Flase:
执行失败.
CloseConn
功能
关闭数据库连接
语法
FunctionCloseConn()AsBoolean
参数
返回
1.True:
数据库连接已经关闭
2.Flase:
执行失败.
Register
功能
注册使用
语法
SubRegister(ByValThisRegisterAsObject)
参数
ThisRegister:
注册对象
返回
事件
事件名称
特征
描述
ErrHappened
功能
程序执行异常,引发异常处理事件
函数
EventErrHappened(ByValobjExceptionAsObject,ByValeAsEventArgs)
参数
objException:
继承System.Exception
e:
参数集
返回
ClientCommand
功能
服务器接收到的用户端自定义命令
语法
EventClientCommand(ByValCommandNameAsString,ByValParameter1AsString,ByVal
Parameter2AsString,ByRefstrReturnValueAsString)
参数
CommandName接收到的用户端自定义命令号
Parameter1:
用户端自定义参数1
Parameter2:
用户端自定义参数2
strReturnValue:
服务端执行完事件,向用户端反馈的信息
返回
strReturnValue:
服务端执行完事件,向用户端反馈的信息
ClientLogin
功能
当lsClientLoginOk=false,用户登录是将引发此事件。
服务器可根据接收到的用户登录信息开发自定
义程序进行用户验证。
验证成功,,弓1用此事件,可以自定义用户登录验证,进一步保障服务端的数据库安全。
语法
EventClientLogin(ByValUserNumAsString,ByValUserPasswordAsString,ByRef
isClientLoginOkAsBoolean)
参数
UserNum:
用户登录号
UserPassword:
用户登录密码
isClientLoginOk:
用户信息验证的结果
返回
isClientLoginOk:
用户信息验证的结果。
返回True:
程序自动设定IsClientLoginOk=true;
返回False:
程序自动设定IsClientLoginOk=false。
DataBaseEx对象
操作功能可类似于adodb.connection。
使用在客户端。
数据库连接对象,可以连接局域网数据库,也可以与web服务上的aspx页面,从而访问internet数据库。
属性
类型
描述
Connectionstring
String
与局域网数据库连接的字符串。
字符串设置与ADODB.ConnectionString设置一样。
在internet连接时,此项不起作用。
Connection
ADODB.Connection
ADODB.Connection对象。
在internet连接时,返回nothing。
ConnectTimeout_second
integer
局域网数据库连接超时时间。
单位:
秒。
在internet连接时,此项不起作用。
CommandTimeout_second
integer
局域网数据库命令超时时间。
单位:
秒。
在internet连接时,此项不起作用。
CursorLocationType
ADODB.CursorLocationEnum
局域网数据库初始化记录集的游标类型。
默认adUseServer
在internet连接时,此项不起作用。
DefaultRecordCacheSize
integer
打开记录集,一次读到内存中的数量.
1.局域网CursorLocationType=adUseServer时,此项有效。
2.局域网CursorLocationType=adUseClient时,记录全部读到用
户端,此项不起作用。
3.在internet通讯时,此项不起作用。
InternetUrl
String
连接的网页地址,在Internet连接时使用。
局域网通讯时,此项不起作用。
InternetUserPort
String
1.与web通讯的接口号,客户端的UserPort须与服务端的
UserPort一致,才能连接。
2.接口号字符串最多12位,英文字母或者数字,在ASCII码范畴内,不允许有中文字符。
3.采用internet的通讯方式时,需要设置此接口号。
局域网通讯时,此项不起作用。
InternetSessionTimeOut_minute
integer
客户端响应的失效时间。
如超过失效时间向服务端发送信息,服务端将重新建立客户对象。
失效时间不能大于服务端session的失效时间,在Internet连接时使用。
局域网通讯时,此项不起作用。
InternetRequestTimeOut_millsecond
integer
请求发岀的最长响应时间,超岀退岀请求,单位:
毫秒局域网通讯时,此项不起作用。
属性
类型
描述
IsEndTrans
Boolean
数据库批处理事务状态.
False:
事务在进行中;True:
事物不在运行。
IsShowErrMsgBox
boolean
岀现异常时,是否弹岀消息提示画面。
多为程序开发调试时使用。
默认:
false
IsShowErrToFile
Boolean
异常是否写入文件
默认:
false
LinkCommucationType
CommucationType
枚举
数据库通讯方式,选择采用局域网方式或者internet方式。
CommucationType枚举类:
LanCommucation=0
InternetCommucation=1
LinkDbType
emDbLinkType
枚举
连接的数据库类型
emDbLinkType枚举类:
SqlServerUsing=0
OdbcUsing=1
AccessUsing=2
OracleUsing=3
MySqlUsing=4
LogFilePath
String
日志文件路径
LogFileName
String
日志文件名称
Number
integer
自动产生的编号,每个连接对象的编号不一样。
State
ADODB.ObjectStateEn
um
当前数据库操作状态。
在internet连接时,此项不起作用。
方法
方法名称
特征
描述
BeginTrans
功能
开始事务,后续命令逐个执行
语法
FunctionBeginTrans(OptionalByValisThrowAsThrowExp=ThrowExp.ThrowErr)AsBoolean
参数
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
事务开启成功
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
BeginTrans_lnternetSql
功能
开始事务,后续命令可以批次执行
局域网连接时,等同BeginTrans;Internet连接时,后续命令可以批次执行,以减少与服务端的通讯次数。
方法名称
特征
描述
语法
FunctionBeginTrans_lnternetSql(OptionalByVaiisThrowAsThrowExp=ThrowExp.ThrowErr)
AsBoolean
参数
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
事务开启成功
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
CloseConn
功能
断开数据库的通讯连接
语法
FunctionCloseConn(OptionalByValisThrowAsThrowExp=ThrowExp.ThrowErr)AsBoolean
参数
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
连接关闭成功
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
ConncetSQ
功能
使用传入的连接字符串,建立数据库通讯连接。
在internet连接时,此项不起作用。
语法
FunctionConncetSQ(ByValstrConnAsString,OptionalByValisThrowExpAsDBnet.ThrowExp=ThrowExp.ThrowErr)AsBoolean
参数
l.strConn:
连接字符串,方式类似于Adodb.Connection.ConnectionString
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
连接成功
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
CommitTrans
功能
事务确认执行,完成后关闭事务。
必须与BeginTrans配套使用。
语法
FunctionCommitTrans(OptionalByValisThrowAsThrowExp=ThrowExp.ThrowErr)AsBoolean
参数
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
事务执行完成
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
CommitTrans_lnternetSql
功能
事务全部执行,完成后关闭事务。
必须与BeginTrans_InternetSql配套使用。
语法
PublicFunctionCommitTrans_InternetSql(OptionalByValisThrowAsThrowExp=
ThrowExp.ThrowErr)AsBoolean
参数
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
事务命令全部通过验证并完成执行.
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
Execute
功能
1.执行一条SQL语句对数据库的操作,如insert,update,delete
语法
FunctionExecute(ByValstrSqlAsString,OptionalByValisThrowAsThrowExp=
方法名称
特征
描述
ThrowExp.ThrowErr)AsBoolean
参数
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
命令执行成功.
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
Execute_Array
重载
功能
1.同时处理多个SQL执行命令(单次最多4个sql文),
2.在internet操作时,多个SQL命令一起执行,可以减少通讯次数。
语法
Execute_Array(ByValstrSqlOAsString,ByValstrSql1AsString,OptionalByVaistrSql2
AsString="",OptionalByValstrSql3AsString="",OptionalByValisThrowAsThrowExp=ThrowExp.ThrowErr)AsBoolean
参数
strSqlO:
一条SQL语句
strSqll:
一条SQL语句
strSql2:
可选,一条SQL语句
strSql3:
可选,一条SQL语句
isThrowExp:
可选,默认值(ThrowErr),程序出现异常会抛出。
返回
1.True:
命令执行成功.
2.参数isThrowExp=NoThrow,执行失败返回Flase,异常信息可用函数GetLasetErr获取。
3.参数isThrowExp=ThrowErr,执行失败抛出异常类HpException,不会返回执行结果。
Execute_Array
重载
功能
1.同时处理多个SQL执行命令(单次sql语句数量没有限制)
2.在internet操作时,多个SQL命令一起执行,可以减少通讯次数。
语法
FunctionExecute_Array(ByValarrSql(