使用此静态类有哪些潜在问题
这是我的示例代码:
public static class MySqlHelper { private static string constring = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString; public static int ExecuteNonQuery(string mysqlquery) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(mysqlquery, conn); int result; try { conn.Open(); result= cmd.ExecuteNonQuery(); } finally { conn.Close(); } return result; } }
用法: MySqlHelper.ExecuteNonQuery("select * from customers");
我想知道使用这个静态类的问题。
我可以改变我在这里提到的课程,但我已经在几个网站上使用这个课程,我需要几天时间在每个地方更改它并测试它。
谢谢你的任何投入。
编辑:更新了代码。 这会对所提供的答案产生影响吗? 对不起,我应该在开头发帖。
我假设连接字符串在执行期间没有改变(你可能想让它只读)。 由于问题中没有显示其他共享状态,因此没有实际问题。
但是,如果您有任何共享状态,则会出现巨大的线程问题。 如果你有共享连接,你会遇到更大的问题。
但正如所写,没有重要的静态字段:没问题。
我认为他的回答很清楚。
在ASP.NET中编写自己的Provider类
“请记住,连接将在所有用户的同一实例中共享,这可能会导致严重问题…”
静态类很难测试。
您的问题提到,要进行更改,您必须在几个网站上更改课程。 如果您的网站耦合到一个接口,那么交换实现将相对简单。
在我自己的项目中,我避免使用公共静态类。 他们可以很快变得笨拙。
因此没有问题,这取决于你如何使用这个类,理想情况下它是抽象工厂模式的一部分,以便具有静态连接,以便可以在整个应用程序中使用相同的连接,但是使用诸如executereader和其他方法之类的方法不是一个好的选择。 类似地总是在使用之前检查连接是否已关闭或其状态,因为如果您正在使用静态连接并且使用了executereader语法,那么它将关闭连接,如果其他方法在此之后使用了连接,那么它将获得错误
明显的缺点是:
1)通过使用单例作为连接字符串名称可以解决丑陋问题
2)在不引入共享数据的情况下无法在静态类中求解:即。 没有在你的背部种植刀。
你知道MySQL Connector for .NET现在有一个MySqlHelper类(你可以在这里查看源码)吗?
如果您打算采用这种方式,您可以考虑使用Microsoft DAAB SqlHelper v2产品。 它使用相同的概念,但更加健壮。 它还缓存SqlParameters。 代码大约在2001年出现,并且一直被许多开发人员使用。
https://www.microsoft.com/download/en/details.aspx?id=435
上述就是C#学习教程:使用此静态类有哪些潜在问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1044371.html