关于控制台应用关闭的问题

问题描述

如果的我控制台程序调用了数据库操作,但使用了trycatch保护。如果中途我关闭了程序,请问数据库连接会不会自动关闭呢?

解决方案

解决方案二:
用finally关闭连接呀

解决方案三:
不好意思没看清楚你说的是中途关闭程序吧.这个我也不太清楚
解决方案四:
就是点左上解那个“X”关闭程序,我用了finally。
解决方案五:
usingSystem;usingSystem.Runtime.InteropServices;//shouldaddareferencetoSystem.Windows.FormsforMessageBox.Show()classProgram{staticConsoleCtrlDelegatehandler;//<---staticvoidMain(string[]args){handler=ConsoleCtrHandler;SetConsoleCtrlHandler(handler,true);while(true){Console.ReadLine();}}staticintConsoleCtrHandler(ConsoleEvente){System.Windows.Forms.MessageBox.Show(e.ToString());return1;}enumConsoleEvent{Ctrl_C,Ctrl_Break,Close,Logoff,Shutdown}delegateintConsoleCtrlDelegate(ConsoleEventctrlType);[DllImport("kernel32.dll",CallingConvention=CallingConvention.StdCall)]staticexternintSetConsoleCtrlHandler(ConsoleCtrlDelegateHandlerRoutine,booladd);}

From:
解决方案六:
你所说的关闭具体是指的什么呢?即使是正常调用关闭,连接会在你的程序和sqlserver中都存在,你的关闭动作只是把连接还回给了连接池而已。如果是程序关闭了,数据库的连接也会仍然缓存在哪里,只是当有其他程序访问数据库时会重用这个连接而已。你所说的关闭是不是说当前你调用的这个执行会中断?比如你调用了一个存储过程需要运行20s,你在第10秒的时候把程序关闭了,你想知道存储过程是否还在运行?
解决方案七:
引用5楼tmxk2002的回复:

你所说的关闭具体是指的什么呢?即使是正常调用关闭,连接会在你的程序和sqlserver中都存在,你的关闭动作只是把连接还回给了连接池而已。如果是程序关闭了,数据库的连接也会仍然缓存在哪里,只是当有其他程序访问数据库时会重用这个连接而已。你所说的关闭是不是说当前你调用的这个执行会中断?比如你调用了一个存储过程需要运行20s,你在第10秒的时候把程序关闭了,你想知道存储过程是否还在运行?

呵呵,我说错了一点,如果程序关闭了,数据库的连接就取消掉了如果你关闭了程序,你的调用的存储过程也就终止了,因为连接都取消掉了。只是不知道是运行程序的机器当机了会是怎样的情况,这要测试了。
解决方案八:
谢谢解答,测试效果,结贴
解决方案九:
一旦连接上数据库,它底层是OLEDB控制,它有一个默认的连接时间,(是可以更改的)程序停止,如果没有关闭连接,它仍旧连接着,直到默认的连接时间到为止,才断开连接

时间: 2024-10-03 09:17:07

关于控制台应用关闭的问题的相关文章

C#捕获控制台(console)关闭事件

有时,公司内部自己开发的控制台(console)应用程序在服务器上运行会因为遇到某些异常自动关闭了,这就需要用某机制来捕获控制台(console)关闭事件,把这样写日志,便于维护和调试. 源码如下: 程序代码 Code 1using System; 2using System.Runtime.InteropServices; 3using System.Threading; 4using System.Diagnostics; 5 6namespace xmlpusher 7{ 8 public

C++ WIN32控制台异常关闭回调函数

/* This is an example of the SetConsoleCtrlHandler function that is used to install a control handler. When a CTRL+C signal is received, the control handler returns TRUE, indicating that it has handled the signal. Doing this prevents other control ha

indows 消息拦截-.NET Console 控制台关闭消息捕获拦截问题

问题描述 .NET Console 控制台关闭消息捕获拦截问题 大家好!我现在做一个.NET Console控制台程序,想拦截控制台窗体关闭消息, 我试过ControlCtrlDelegate Win32 API,只有5秒钟的时间我试过钩子程序,同样的钩子程序在WinForm里能拦截消息,但是在Console里不能被拦截我也试过Windows消息循环处理,如果有Timer的话,Timer的消息是能被GetMessage的,这个没用,要的是Console窗口的消息,Console的消息不能被Get

04_Weblogic之受管服务器:配置受管服务器,启动受管服务器,解决因为强制关闭Weblogic之后导致启动有问题的问题,配置boot.properties

 配置受管服务器, 先启动WebLogic服务器,启动方式如下: 在WebLogic控制台中的"开发模式"---"锁定并编辑"模式下,点击"Server(服务器)"然后进行配置.(进入控制台的方式是在浏览器地址中输入:http://192.168.6.25:7001/console/login/LoginForm.jsp). 点击登录,然后进入登录页面. 3 开始配置,暂开"环境"----"服务器",进

解决基于NT内核的操作系统启动故障(2)

解决 无论哪个阶段出现问题,那么 Windows 都可能停止响应(挂起)或提示错误消息,原因是缺少操作系统所需的文件或者这些文件已损坏.解决此类问题需要科学利用Windows 提供的方法,其中包括安全模式.故障恢复控制台和紧急修复盘等.启动过程指在启动加载器上选择相应的系统项后至出现桌面并且硬盘停止响动为止,如果没有出现启动加载器选择菜单,则需要通过安装光盘或手工恢复丢失的启动加载器菜单. 排除故障的过程遵循先 Windows 环境中加载的程序,然后核心操作系统的循序,如果故障与前者有关就卸载或

HangFire分布式后端作业调度框架服务

HangFire简述: 分布式后端作业调度框架服务,我们只需要关心业务逻辑代码,而不用关心调度机制,支持.net framework和.net core HangFire基本结构: 客户端(创建任务).服务端(执行任务).数据库(存储任务列表和执行状况).仪表盘(在网站上对任务进行监控查看和各种操作) HangFire适用场景: 定时执行任务.循环执行任务.异步执行耗时任务.A任务执行完成再执行B任务.批量执行任务 HangFire官网: https://www.hangfire.io/ Han

nginx概念理解

Nginx是什么 代理服务器:一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端.应用比如:GoAgent,翻墙神器.   一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接.或者获得目标服务器的指定资源. Web代理(proxy)服务器是网络的中间实体. 代理位于Web客户端和Web服务器之间,扮演"中间人"的角色.HTTP的代理服务器即是Web服务器又是Web客户端. 代理

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

对于使用IDE开发的程序员来讲,并不是所有人都对自己用来吃饭的工具了如指掌.常在阴沟跑,哪能不翻船.为此我把自己使用Tomcat/Eclipse的一些经验教训整理了一下,会陆续的贴出来,也许会帮到和我遇到同样问题的人.  先讲一个Tomcat的问题.很多人兴冲冲的下载了一个Tomcat,跑到bin看到一个startup.bat就去执行,结果提示Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At lea

如何高效的进行子域名收集与筛选?

本文讲的是如何高效的进行子域名收集与筛选?, 介绍 当我在寻找Hackerone上的新目标时,我总是会去关注已解决报告的数量,因为这一更高的数字可能意味着你在这里能够发现漏洞的机会比在那些关闭了提交意见的程序上更为容易.正因为这个原因,所以我选择了雅虎! 我们都知道雅虎是大型的国际公司,所以我预计其会有很多子域名,路径和重定向,但从哪里开始呢?这时候就要用到我最喜欢的枚举/强化子域名工具:Sublister(https://github.com/aboul3la/Sublist3r)和Fierc