我正在通过com端口连续接收数据并进行一些解码。解码完成后,我必须将结果存储在sql数据库中。我在想,因为解码是每秒完成数十次(在while循环中始终运行),并且如果明智的做法是打开和关闭与sql 2 T. g% |% [0 d. [server的连接,则每秒需要将数据存储到数据库数十次。每个while循环或只是使其保持打开状态并继续将数据写入数据库。首先这可能吗?其次,如果连接保持打开状态,那么第三方应用程序或计算机可以同时访问数据库并在程序存储数据时读取数据吗?& X4 E+ m: m) I! s, n
( B0 u! Q9 b) w% G7 |! K& c3 S, E, ]解决方案:" ^- z8 R$ \ G* }6 h' n$ [; m( G
: E# b* e# C. o4 i
6 y# k, f$ E" e& Q K ! |2 Y+ Y0 o* |% m- F9 W 一个数据库支持多个并发连接,因此,在这种情况下,使数据库连接保持打开状态是非常可行的-& U j& y8 j. ]# Y2 Z. ?5 A
只有在长时间运行的查询导致行/表锁定的情况下,您才可以锁定其他数据库。完成后,只需关闭连接即可。 7 B( y1 g/ B* L- J还应考虑到尽管大多数数据库(即SQL Server)在内部使用连接池,所以即使您关闭了数据库连接,它也只是返回到池中,而不是在物理上关闭-池管理着物理数据库连接-, x% y2 |) {0 N% e5 m! L
这样会更好性能,因此快速减少了打开/关闭连接的影响。* p4 ?$ k- c9 m$ W4 t: v1 n
从MSDN:9 |, b1 w6 _& `: A9 Z