mysql odbc 连接中断的解决

最近一个项目需要用到MySQL数据库,MySQL平时用得不多,之前是用ODBC连接的,倒也没什么大问题,这次依然用ODBC,但在部署时问题来了:


因为系统要通过循环导入数据,所以对数据库的访问非常密集,服务器总在执行到2万条时出现“不能连接...”的错误提示,重新启动后又可以连接,


怀疑是MySQL的性能承受能力有限,所以在每条加插入语句后加了Thread.Sleep,情况有所好转,但始终不能从根本上解决。


突然有一天想起更换驱动,改用MySQLClinet来连接,结果仍然是出现不能连接。看到下从网上下载的MySQLClient的代码,发现每次执行语句都要重新创建一个连接,这个写法一开始没有注意,因为常用的SqlHelper也是这样写的,但后来仔细回忆了下,SqlServer的连接是有连接池的,即在代码里关闭了连接,但连接池中的连接资源并没有立即释放,所以频繁关闭、创建不会有问题,但MysqlClient不一定实现了这样的机制,所以将代码改为只创建一个连接,不管循环多少次,都使用这一个连接。这样连接再也不出问题了!


另外再说下,用odbc也试过用单个连接,不好使。在odbc下似乎存贮过程也不能使用


关于MySqlClinet的连接还有两个地方要注意:

在连接串中要加入“ User Variables=True;Character Set=gbk”,这可确保能在sql语句中使用变量,还有插入的中文不出现乱码。

完整的连接如:

Data Source=127.0.0.1;database=XXXX; user id=; Password=; Allow User Variables=True;Character Set=gbk



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值