C# winform实现程序启动的时候生成临时表,当窗口关闭的时候销毁临时表,数据库为SQLSERVER
我想实现以下功能,当winform启动的时候生成几张临时表,期间会有其他的线程访问这些临时表的数据,当winform退出的时候销毁这些临时表。
我现在是在程序启动的时候创建了一个静态的SqlConnection对象并且打开这个会话,当需要创建临时表的时候,就将这个SqlConnection对象传入方法里面,执行完方法之后我并没有关闭这个SqlConnection对象,但是我发现只要我的方法执行完创建临时表的操作,数据库中的临别表就被自动删除了,局部和全局的临时表我都试过了,都是这样的结果,不知道哪位大神能给点指导意见?
因为我这边数据库中有几个表的数据量比较大,然后更新和删除频繁,所以想把数据写到临时表中去查询,这样和主表分开不影响那边的更新和删除操作。
这里有完整的例子
http://download.csdn.net/detail/szstephenzhou/3469553
http://download.csdn.net/detail/h2osio2/5030756
http://download.csdn.net/detail/tangxingangtom/4522038
为何不对数据库做读写分离?
没法做,因为是和别人的系统对接的,库是他们那边在弄,而且是每台机器上面一个库,我这边是连接的他们那边的库的
可以试一试放到一个transaction里面。
不行就创建一个table而不是temp table, 用完删除它。
/*
1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。
2、全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除。
3、不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表。
*/
因为是临时表,他的特性就是你断开了就没了,如果是很频繁的操作我觉得是不是可以使用缓存之类的,比如Redis等来操作,速度比较快,也比较好实现
哈哈哈,我也遇见同样的问题了,现在也很头疼。
不过,我能想到你的解决方式,就是不断开连接,不关掉。就行了一直重用,我的不行,我是一个网页项目,我在想其他方法。