C#这样连接mysql有重复连接?

谁学逆向工程 2018-06-18 10:41:10
[code=c#] private void OnTimer(object sender, EventArgs e)
{
MySqlCommand command = new MySqlCommand("select xy,sendtime from phonenumber", msg.Program.mycon );
MySqlDataReader reader = command.ExecuteReader(); ;
try
{
while (reader.Read())
{
if (reader.HasRows)
{
。。。。。。

//////////////////////////////////////////////////////////////////////////////



if (时 == Convert.ToInt32(strShi) && 分 == Convert.ToInt32(strFen))
{

try
{
//这里总报错说已经有一个连接了
command = new MySqlCommand("update phonenumber set sendtime='' ", msg.Program.mycon);
command.ExecuteNonQuery();
}
catch (Exception ee)
{
Console.WriteLine(ee.Message);
}
}
}
}
}
catch (Exception)
{
Console.WriteLine("查询失败了!");
}
reader.Close();
}
[/code]
msg.Program.mycon
msg是namespace,pragram是类,mycom是public static变量,变量在main中初始化
...全文
245 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
谁学逆向工程 2018-06-18
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
你想想看,谁让你搞一个 static 的连接呢?这肯定是没有怎么编写过稍微正式一点的数据库编程,而且也没有多线程数据库访问编程。 当你正在使用一个数据库连接时(没有断开 DbDataReader 时),要访问数据库就得开启其它数据库连接实例。对于可能在不同线程中的连接更是如此,必须及时创建连接对象、用完了即使释放(还给连接池)。
为了简单,整个程序在一运行的时候就建立连接,关闭程序的时候在断开,这样应该怎么弄比较好
  • 打赏
  • 举报
回复
有时候看到有人说“在窗体级别(窗口打开初始化时)声明一个数据库链接,甚至是应用程序级别声明一个 static 的连接”,这个是一些博客上错误的说明。
  • 打赏
  • 举报
回复
你想想看,谁让你搞一个 static 的连接呢?这肯定是没有怎么编写过稍微正式一点的数据库编程,而且也没有多线程数据库访问编程。 当你正在使用一个数据库连接时(没有断开 DbDataReader 时),要访问数据库就得开启其它数据库连接实例。对于可能在不同线程中的连接更是如此,必须及时创建连接对象、用完了即使释放(还给连接池)。
  • 打赏
  • 举报
回复
创建数据库逻辑连接,要在必要的时候才创建,然后及时释放,也就是说写到
using(var conn = CreateMyDBConnection())
{
    ........
}
这样的结构中,确保及时释放会连接池。 违背了正式的编程规范,要简单还有什么意义?
  • 打赏
  • 举报
回复
最简单的办法就是什么都不做。如果连正确性都不能保证,要简单其实等于最复杂——干不成事儿。

110,534

社区成员

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

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

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