C#远程数据库连接网络经常断开,怎么解决!!

taoye_11 2019-10-07 09:39:24
我用C#远程读取数据库,但是网络不好,经常断开。在每次断开后会影响我开发程序,使用变慢,有时会卡死。请问:怎么做才能不影响我的程序其它部分使用,还可以提示数据库网络断开或是没有连接上,在网络恢复后数据库还能正常使用。能给个思路吗,最好给个代码,如果分少可以多加分数,联系邮箱:947738699@qq.com,谢谢!!
...全文
789 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jeantone 2019-10-14
  • 打赏
  • 举报
回复
写个服务端比较好,然后你的程序连服务端
大鱼> 2019-10-11
  • 打赏
  • 举报
回复
引用 7 楼 taoye_11 的回复:
[quote=引用 5 楼 exception92 的回复:] [quote=引用 4 楼 taoye_11 的回复:] [quote=引用 3 楼 exception92 的回复:] 在每次断开后会影响我开发程序,使用变慢,有时会卡死 ->卡死阻塞了主线程,链接数据库部分使用异步方式,在捕获断开链接异常时启用重连操作,直到链接成功.
在异常重启的 时候我的程序会阻塞吗?还是要在后台线程运行?[/quote] 后台线程中运行。[/quote] 我试了,但是数据不实时更新,在DataGridView控件不显示实时更新的数据。[/quote] DataGridView数据源绑定的时候可以使用BindingList进行绑定,届时你只需要更新BindingList的数据源即可完成对控件数据的更新
往事111 2019-10-11
  • 打赏
  • 举报
回复
我也是直接连接远程 数据库,因为只有数据库服务器,没得中间层,没有出现楼主的情况 ,要不换个服务器试一下?当然我的数据不太多
  • 打赏
  • 举报
回复
引用 7 楼 taoye_11 的回复:
[quote=引用 5 楼 exception92 的回复:] [quote=引用 4 楼 taoye_11 的回复:] [quote=引用 3 楼 exception92 的回复:] 在每次断开后会影响我开发程序,使用变慢,有时会卡死 ->卡死阻塞了主线程,链接数据库部分使用异步方式,在捕获断开链接异常时启用重连操作,直到链接成功.
在异常重启的 时候我的程序会阻塞吗?还是要在后台线程运行?[/quote] 后台线程中运行。[/quote] 我试了,但是数据不实时更新,在DataGridView控件不显示实时更新的数据。[/quote] 确保能正确读取到数据,最好是调试一下,跟踪一下数据集合的变化。
pcwe2002 2019-10-10
  • 打赏
  • 举报
回复
直连远程数据库存在容易掉线和速度慢的问题,可以通过中间层解决。可以试试这种方法,修改下连接对象就可以实现把原来两层变成三层,非常简单。速度会比直连快很倍,网络断开后恢复后也能重新连接上。 https://blog.csdn.net/pcwe2002/article/details/83303224
taoye_11 2019-10-10
  • 打赏
  • 举报
回复
引用 5 楼 exception92 的回复:
[quote=引用 4 楼 taoye_11 的回复:]
[quote=引用 3 楼 exception92 的回复:]
在每次断开后会影响我开发程序,使用变慢,有时会卡死
->卡死阻塞了主线程,链接数据库部分使用异步方式,在捕获断开链接异常时启用重连操作,直到链接成功.


在异常重启的 时候我的程序会阻塞吗?还是要在后台线程运行?[/quote]
后台线程中运行。[/quote]
我试了,但是数据不实时更新,在DataGridView控件不显示实时更新的数据。
  • 打赏
  • 举报
回复
引用 4 楼 taoye_11 的回复:
[quote=引用 3 楼 exception92 的回复:] 在每次断开后会影响我开发程序,使用变慢,有时会卡死 ->卡死阻塞了主线程,链接数据库部分使用异步方式,在捕获断开链接异常时启用重连操作,直到链接成功.
在异常重启的 时候我的程序会阻塞吗?还是要在后台线程运行?[/quote] 后台线程中运行。
  • 打赏
  • 举报
回复
在每次断开后会影响我开发程序,使用变慢,有时会卡死 ->卡死阻塞了主线程,链接数据库部分使用异步方式,在捕获断开链接异常时启用重连操作,直到链接成功.
taoye_11 2019-10-08
  • 打赏
  • 举报
回复
引用 3 楼 exception92 的回复:
在每次断开后会影响我开发程序,使用变慢,有时会卡死
->卡死阻塞了主线程,链接数据库部分使用异步方式,在捕获断开链接异常时启用重连操作,直到链接成功.


在异常重启的 时候我的程序会阻塞吗?还是要在后台线程运行?
秋的红果实 2019-10-08
  • 打赏
  • 举报
回复
还可以提示数据库网络断开或是没有连接上 ==》 sqlconnection有状态属性, if(conn.state==断开) { conn.open(); }
it_gz_xi 2019-10-08
  • 打赏
  • 举报
回复
winform的单客户端程序吗? 建议你写个服务端,客户端向服务器拿数据,而不是直接从数据库拿数据。好处有很多的 这样也可以解决你的问题

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧