问题描述
如果的我控制台程序调用了数据库操作,但使用了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控制,它有一个默认的连接时间,(是可以更改的)程序停止,如果没有关闭连接,它仍旧连接着,直到默认的连接时间到为止,才断开连接