使用这个静态类有哪些潜在问题下面是我的示例代码:publicstaticclassMySqlHelper{privatestaticstringconstring=ConfigurationManager.ConnectionStrings["MyConnString”]。连接字符串;publicstaticintExecuteNonQuery(stringmysqlquery){SqlConnectionconn=newSqlConnection(connString);SqlCommandcmd=newSqlCommand(mysqlquery,conn);整数结果;尝试{conn.Open();结果=cmd.ExecuteNonQuery();}最后{conn.Close();}返回结果;}}用法:MySqlHelper.ExecuteNonQuery("select*fromcustomers");我想知道使用这个静态类的问题。我可以更改我在此处提到的类,但我已经在多个站点上使用过此类,我需要几天时间才能在每个地方更改它并进行测试。感谢您的任何输入。编辑:更新代码。这对提供的答案有影响吗?抱歉,我应该在开头发帖。我假设连接字符串在执行期间没有改变(您可能希望它是只读的)。由于问题中没有显示其他共享状态,因此没有实际问题。但是,如果您有任何共享状态,则会出现巨大的线程问题。如果你有共享连接,你会遇到更大的问题。但正如所写,没有重要的静态字段:没问题。我觉得他的回答很明确。在ASP.NET中编写您自己的Provider类“请记住,连接将在所有用户的同一实例之间共享,这可能会导致严重的问题……”静态类很难测试。您的问题提到要进行更改,您必须更改多个站点上的类。如果您的网站耦合到一个界面,那么交换实现将相对简单。在我自己的项目中,我避免使用公共静态类。他们很快就会变得笨拙。所以没问题,这取决于你如何使用这个类,理想情况下它是抽象工厂模式的一部分,有一个静态连接,这样同一个连接可以在整个应用程序中使用,但是像executereader和其他方法这样的方法不是一个好方法选择。同样,在使用连接之前始终检查连接是否已关闭或其状态,因为如果您使用的是静态连接并且使用了executereader语法,那么它将关闭连接,如果此后连接被其他方法使用,那么它将得到anerror明显的缺点是:1)丑陋的问题可以通过使用单例作为连接字符串名称来解决2)在不引入共享数据的情况下无法在静态类中解决:即。不要在你的背后插刀。您是否知道MySQLConnectorfor.NET现在有一个MySqlHelper类(您可以在此处查看源代码)?如果您要这样做,您可以考虑使用MicrosoftDAABSqlHelperv2产品。它使用相同的概念,但更健壮。它还缓存SqlParameters。该代码出现在2001年左右,并已被许多开发人员使用。http://www.microsoft.com/download/en/details.aspx?id=435以上是C#学习教程:使用这个静态类有哪些潜在问题?更多关于C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
