社区
数据库相关
帖子详情
如何实现数据库访问的短连接,完全断开再打开
hohoxcn
2006-12-11 11:55:48
用Adoconnection定义了一个数据库连接DBConn,配制好后打开Open.执行Execute。获取数据后关闭连接close, connected=false。待需要时再打开Open,执行Execute.
但发现关闭连接后,不Open,仍然可以Execute。请高手指点一条真正断开连接,然后可以再连数据库的方法!谢谢谢谢!
...全文
135
1
打赏
收藏
如何实现数据库访问的短连接,完全断开再打开
用Adoconnection定义了一个数据库连接DBConn,配制好后打开Open.执行Execute。获取数据后关闭连接close, connected=false。待需要时再打开Open,执行Execute. 但发现关闭连接后,不Open,仍然可以Execute。请高手指点一条真正断开连接,然后可以再连数据库的方法!谢谢谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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的过程中,最理想的操作流程:
程序启动,
打开
数据库
连接
,在程序退出前,一直保持这个
连接
。程序退出时,才关闭该连。
最理想的状态的前提:该
数据库
连接
在中间不会
断开
。不会由于网络或者
数据库
服务器的原因导致
连接
断开
。
实际情形是:需要开发一个长时间运行的程序,
数据库
服务器可能在很远的地方,网络不可靠。人工在
连接
断开
的时候不可能及时的干预。最好的方式就是程序能够检测到
连接
断开
,并且能够自动重新
连接
。
oracle
数据库
长
连接
和
短
连接
,tcp 长
连接
与
短
连接
长
连接
与
短
连接
使用TCP协议时,会在客户端和服务器之间建立一条虚拟的信道,这条虚拟信道就是指
连接
,而建议这条
连接
需要3次握手,拆毁这条
连接
需要4次挥手,可见,我们建立这条
连接
是有成本的,这个成本就是效率成本,简单点说就是时间成本,你要想发送一段数据,必须先3次握手(来往3个包),然后才能发送数据,发送完了,你需要4次挥手(来往4个包)来
断开
这个
连接
。其二,CPU资源成本,三次握手和4次挥手和发送数...
Ado.net中
数据库
连接
的两种模式:
连接
模式和
断开
模式
Ado.net为我们提供了两种
连接
数据库
的方式:
连接
模式和
断开
模式.对数据的读取和操作在
断开
数据库
连接
之前,这样的工作方式称为
连接
模式,一般使用DataReader称为
连接
模式.而对数据的读取在
断开
数据库
连接
之后,这样的工作方式称为
断开
模式,一般使用dataset.dataset包括datatable和dataview.前者用于一个表的时候,后者用于多个表合并的时候.一般都采用
断开
模式,这样当多个
MYSQL
数据库
自动
断开
连接
第一次往服务器上传项目,结果第二天就开始报错,
访问
不了
数据库
,以为谁不小心把
数据库
删了,看了看发现
数据库
数据都在,又重启了一下tomcat发现有能用了,就很迷,然后百度了一下发现,MySQL
数据库
8小时不
访问
就自动
断开
链接了。 看大佬们的博客发现一共三种解决方案。 一:修改MySQL配置参数 这个参数的名称是wait_timeout,其默认值为28800秒(8小时)。其意义为关闭一个
连接
...
数据库相关
2,507
社区成员
88,454
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章