日期:2014-05-18  浏览次数:20466 次

新人求教!DBHelp类
为什么DBHelp类中的方法永静态的? 静态的不是不安去么?
如 public static int ExecuteNonQuery(String sql,SqlParameter[] list){..........}

RT 假设 200同时访问数据 会不会出现数据不一致?
-----------------------------------------------------------------
为什么不 New 一个DBHelp呢? 调用他的非静态方法来完成呢,哪不是更安全么?

public int ExecuteNonQuery(String sql,SqlParameter[] list){..........}

如 DBhelp o = new DBHelp(); o.ExecuteNonQuery(String sql,SqlParameter[] list);
-------------------------------------------------------------------
有人说用lock 我发现是安全了 可是访问速度不敢恭维
****************************************************************************************************
另外 微软的Dbhelp类 public abstract class SqlHelper 抽象类?
方法 public static int ExecuteNonQuery(String sql,SqlParameter[] list){..........}
难道抽象类中写个静态方法就安全了?


大神们指点下 别骂我 我是新淫..

------解决方案--------------------
并发访问数据库的问题,需要你自己的程序区控制,DBHelper 无法帮助你实现。
DBHelper 类中的静态方法只是保证调用的线程安全,确保程序资源的正确释放。
------解决方案--------------------
1、用静态方法可以不用new直接可以调用,如果不是静态的话,调用类的时候必须得new,这时系统将会为该对象分配一块内存空间。直接用static能节省很大的资源。
2、只是用数据库读取数据,不会出现不一致的情况,除非第一次读的时候,在与第二次读之间,有用户更改或者删除了数据,数据库会自动加上锁,这时候才会出现脏读的情况。
3、安全性的问题与是不是static类无关。
4、用lock,是为了在对某条数据库记录进行操作时,别人又来操作该条记录。
5、抽象类是为了你继承该类的时候可以重写基类的方法。static方法参见1


------解决方案--------------------
学习学习..........
------解决方案--------------------
DBHelper 类中的静态方法只是保证调用的线程安全,确保程序资源的正确释放。
------解决方案--------------------
用静态 运行比new出来的快一些 
而且你可以少写代码 不用想对象的变量名
抽象类是让别人不要去new它

肤浅地解说一下
------解决方案--------------------
探讨
1、用静态方法可以不用new直接可以调用,如果不是静态的话,调用类的时候必须得new,这时系统将会为该对象分配一块内存空间。直接用static能节省很大的资源。
2、只是用数据库读取数据,不会出现不一致的情况,除非第一次读的时候,在与第二次读之间,有用户更改或者删除了数据,数据库会自动加上锁,这时候才会出现脏读的情况。
3、安全性的问题与是不是static类无关。
4、用lock,是为了在对……

------解决方案--------------------
并发访问数据库使用事务和锁机制
一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己的需要选择是用动态方法还是静态方法
接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系
抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能
接口多定义对象的行为
------解决方案--------------------
首先静态没有不安全之说.静态只是意味着方法是类的成员,而不是实例的成员,所以可以直接使用类.方法名使用.
一般不会出现不一致,除非你的代码有问题,你可以添加锁.