【发布时间】:2013-10-25 18:52:37
【问题描述】:
我正在为 MySQL 编写 c# 包装类,我需要知道是否可以将“new MySqlConnection(connstr)”放入构造函数中,然后在要操作数据库的方法之间使用相同的对象?我是否应该为每个操作(选择、插入、删除、更新)创建一个新连接并在完成后销毁它。编写 MySQL 包装器的任何想法或更好的方法?
【问题讨论】:
标签: c# mysql class visual-studio-2012
我正在为 MySQL 编写 c# 包装类,我需要知道是否可以将“new MySqlConnection(connstr)”放入构造函数中,然后在要操作数据库的方法之间使用相同的对象?我是否应该为每个操作(选择、插入、删除、更新)创建一个新连接并在完成后销毁它。编写 MySQL 包装器的任何想法或更好的方法?
【问题讨论】:
标签: c# mysql class visual-studio-2012
我建议不要共享该连接。
它不会像在需要时从池中获取该连接、执行 SQL 操作、关闭资源然后将连接返回到池中那样进行扩展。
我认为将 SQL 对象限制在数据访问层并在尽可能窄的范围内使用它们是一种最佳做法。不要到处乱扔它们——如果你这样做了,清理它们的责任就不清楚了。
连接应该归了解用例、工作单元和事务的服务所有。让它检查连接,使其可供所有需要它的 DAO 使用,然后提交或回滚并关闭连接。
应该为 DAO 提供数据库连接。他们不应该自己获得它们,因为他们永远无法知道它们是否是更大交易的一部分。
【讨论】:
对于数据库连接,规则应该是尽可能晚打开并尽可能早关闭,.
所以在执行查询之前打开连接然后关闭它,而不是在不同的方法之间共享一个连接对象。
【讨论】:
有一个MySqlHelper 类应该为您完成所有连接池、打开、关闭、处理等操作。 “这些以连接字符串作为参数,并且完全支持连接池。”那只是您使用的是 Oracle 提供的 MySQL 连接器。
【讨论】: