社区
数据库相关
帖子详情
如何实现数据库访问的短连接,完全断开再打开
hohoxcn
2006-12-11 11:55:48
用Adoconnection定义了一个数据库连接DBConn,配制好后打开Open.执行Execute。获取数据后关闭连接close, connected=false。待需要时再打开Open,执行Execute.
但发现关闭连接后,不Open,仍然可以Execute。请高手指点一条真正断开连接,然后可以再连数据库的方法!谢谢谢谢!
...全文
149
1
打赏
收藏
如何实现数据库访问的短连接,完全断开再打开
用Adoconnection定义了一个数据库连接DBConn,配制好后打开Open.执行Execute。获取数据后关闭连接close, connected=false。待需要时再打开Open,执行Execute. 但发现关闭连接后,不Open,仍然可以Execute。请高手指点一条真正断开连接,然后可以再连数据库的方法!谢谢谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
老冯
2006-12-11
打赏
举报
回复
给你一个真正断开的例子:
var
Obj: IBusOrder;
MConnection: TADOConnection;
MQuery: TADOQuery;
begin
Result := False;
Visited.QueryInterface(IBusOrder, Obj);
if Obj <> nil then
begin
CoInitialize(nil);
MConnection := TADOConnection.Create(nil);
MConnection.ConnectionString := DBConnection;
MConnection.LoginPrompt := False;
MConnection.Open;
MQuery := TADOQuery.Create(nil);
with MQuery do
begin
try
Connection := MConnection;
MConnection.BeginTrans;
try
SQL.Text := ' Insert Into TPTMIS_BusOrderInfo(FBusOrderID, '+
' FBusOrderName, '+
' FLineID, '+
' FLineName, '+
' FLeaveTime, '+
' FSeatingPreset, '+
' FChildrenPreset, '+
' FIntervalDays, '+
' FOriginalDate ) '+
' Values(:FBusOrderID, '+
' :FBusOrderName, '+
' :FLineID, '+
' :FLineName, '+
' :FLeaveTime, '+
' :FSeatingPreset, '+
' :FChildrenPreset, '+
' :FIntervalDays, '+
' :FOriginalDate ) ';
Parameters.ParamByName('FBusOrderID').Value := Obj.BusOrderID;
Parameters.ParamByName('FBusOrderName').Value := Obj.BusOrderName;
Parameters.ParamByName('FLineID').Value := Obj.LineID;
Parameters.ParamByName('FLineName').Value := Obj.LineName;
Parameters.ParamByName('FLeaveTime').Value := FormatDateTime('HH:MMMM', Obj.LeaveTime);
Parameters.ParamByName('FSeatingPreset').Value := Obj.SeatingPreSet;
Parameters.ParamByName('FChildrenPreset').Value := Obj.ChildrenPreSet;
Parameters.ParamByName('FIntervalDays').Value := Obj.IntervalDays;
Parameters.ParamByName('FOriginalDate').Value := Obj.OriginalDate;
ExecSQL;
MConnection.CommitTrans;
Result := True;
except
MConnection.RollbackTrans;
Result := False;
end;
finally
MQuery.Free;
MConnection.Free;
end;
end;
end;
end;
(我的工程应用代码)
数据库
连接
池应用中
数据库
服务器
断开
超时
连接
的问题
点击
打开
链接
数据库
应用开发过程中,我们可能会遇到一个问题:应用使用了
数据库
连接
池,每经过指定时间后,发出到
数据库
服务器的任何请求都会失败,而且有且仅有一次失败,之后的正常
访问
都没有问题。尤其是在Web应用中,如果晚上时段没有
访问
,而第二天第一个访客的经历就是碰到一个
数据库
访问
错误,如果开发系统的程序员没有注意这个问题的话,可能终端用户
访问
会看到抛出的一堆
数据库
异常信息。 其实,这
ADO
数据库
连接
断开
重连
在使用ADO的过程中,最理想的操作流程:
程序启动,
打开
数据库
连接
,在程序退出前,一直保持这个
连接
。程序退出时,才关闭该连。
最理想的状态的前提:该
数据库
连接
在中间不会
断开
。不会由于网络或者
数据库
服务器的原因导致
连接
断开
。
实际情形是:需要开发一个长时间运行的程序,
数据库
服务器可能在很远的地方,网络不可靠。人工在
连接
断开
的时候不可能及时的干预。最好的方式就是程序能够检测到
连接
断开
,并且能够自动重新
连接
。
MySQL-长
连接
和
短
连接
MySQL
连接
分为长
连接
和
短
连接
两种模式:长
连接
:在长
连接
模式下,应用程序与MySQL
数据库
建立一次
连接
后,保持
连接
处于
打开
状态,直到显式关闭
连接
。这意味着应用程序可以多次使用相同的
连接
来执行多个查询或更新操作,而不需要每次都建立新的
连接
。
短
连接
:
短
连接
模式下,应用程序执行完一个查询或更新操作后,立即关闭
连接
。下次需要再次操作
数据库
时,重新建立一个新的
连接
。MySQL长
连接
和
短
连接
是两种不同的
连接
模式,各有优点和缺点。选择合适的
连接
模式取决于应用的需求,
数据库
负载,和开发者的管理能力。
Ado.net中
数据库
连接
的两种模式:
连接
模式和
断开
模式
Ado.net为我们提供了两种
连接
数据库
的方式:
连接
模式和
断开
模式.对数据的读取和操作在
断开
数据库
连接
之前,这样的工作方式称为
连接
模式,一般使用DataReader称为
连接
模式.而对数据的读取在
断开
数据库
连接
之后,这样的工作方式称为
断开
模式,一般使用dataset.dataset包括datatable和dataview.前者用于一个表的时候,后者用于多个表合并的时候.一般都采用
断开
模式,这样当多个
oracle
数据库
长
连接
和
短
连接
,tcp 长
连接
与
短
连接
长
连接
与
短
连接
使用TCP协议时,会在客户端和服务器之间建立一条虚拟的信道,这条虚拟信道就是指
连接
,而建议这条
连接
需要3次握手,拆毁这条
连接
需要4次挥手,可见,我们建立这条
连接
是有成本的,这个成本就是效率成本,简单点说就是时间成本,你要想发送一段数据,必须先3次握手(来往3个包),然后才能发送数据,发送完了,你需要4次挥手(来往4个包)来
断开
这个
连接
。其二,CPU资源成本,三次握手和4次挥手和发送数...
数据库相关
2,507
社区成员
88,453
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章