前几个问题的分,我都给了,多答多得!本人诚信第一
protected static string strCon = ConfigurationSettings.AppSettings["strCon"];
protected static string strSql;protected static bool ExecuteSql(string strSql)
{
OleDbConnection con = new OleDbConnection(strCon);
OleDbCommand cmd = new OleDbCommand(strSql, con);try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
cmd.Dispose();
con.Close();
}
}这是一个类的静态方法,也就是读ACCESS数据的一个方法!我想问的就是下面的二个问题
问题一:在分布式的应用程序中,不用COM+我把连接数据库的所有方法全部写成静态的一个类,请问这样做对性能有没影响,我在网上找过了,有些文章说,静态的类是共享的,也就是说当一个客户端正在打开一个连接的时候,调用了这个类的静态方法,但同时,另一个客户端也在打开,在时间上是一样的也就是说并发!那么另一个客户端这个时候,就不能调用这个方法!换句话说:“类中的静态方法,只能给一人客户端用,如果另一个客户端要用的话,要等代”而如果把数据连接的类,编写成动态的方法就不存在这种情况!如果十个人同时连接,就创接10个对像!到底我要用那个方法连接呢?请大家帮个忙!
问题二:上面的方法,是比较标准的连数据库的方法,大家可以参考!现在有个问题。但执行一些更新或插入的方法的时候,是用布儿的值返回,还是用INT返回好 就是用return 0
还有是最其本的语法,就是try块,当执行到 return 时或发生错误,执行catch块中的return时,是不是都会执行finally!这关系到,执行return后,是否都会执行finally 就是最基本的语法问题有回都给分

解决方案 »

  1.   

    静态的类是共享的,没错是这样的,感觉这个类用不好很危险,对于数据连接还是不要用这个方法好。
    try 块无论怎么执行都会执行finally
      

  2.   

    执行catch块中的return时,是不会执行finally问题一:取决于你的这个中间层是如何工作的。如果是一直运行的,则状态肯定是一个,如果是根据客户端初始化的,效果就不同了。
    另外,虽然是多用户多线程的系统,但是同一时间只有一个在运行,所以冲突的可能性不大。问题二:返回字符型最通用,到处都认,如果bool int之间的比较的话,其实没有太大的区别。你既然能够返回一个对象了,返回bool还是int还会有关系吗?
    另外,为何不使用webservice来完成你的分布式系统。
      

  3.   

    Webservice我用过,但它的每秒防问数量实在是太低了!用Webservice的功能做的同样功能的程序,用ACT测试,性能降低了60%,可以理解,它每次都要调用Webserivec的程序,所以只想用它执行任务,如果catch中的RETURN不能关数据库,那么在RETURN之间,要不要显式的关掉数据库
    。还是说本身执行到CATCH,说明数据库跟本没打开过呢,或打开后出现错误
      

  4.   

    conn.open();

    cmd.ExecuteNonQuery();
    应该放在不同的try里,或者你catch不同的异常类型至于静态方法是可以同时n个人调用的,但是要注意静态方法里面用到的需要修改的对象不能是共享的,比如你这个OleDbConnection对象是调用静态方法的时候new的,不会冲突的,你的strCon这个虽然是共享的,但是是不会修改的,所以也不会冲突,没有关系的如果怕多线程冲突用
    lock锁吧
      

  5.   

    try语句的finally是一定会执行的,不管是否renturn了
    不信,你可以自己试试
      

  6.   

    好吧,那我就动手测一下,看一下finally会不会执行,我只要用RESPONSE就可以测了!第一个问题能不能并发控制,我昨么测啊!
      

  7.   

    给分了,没错,无论如何都会到finally不管你return不return!
      用精态方法做的连接,现在没法子测,但好像是不能并发的吧!只能是用完了,才给别人用,动态的就可以!
      

  8.   

    一:行。
    二:int。最起码可以多返回些东西,比如受影响的行。当然,其实你应该写类似的函数写几个,来应付不同的场景。基本上讲,只要不发生内存溢出之类的系统崩溃型异常,都会执行finally中的Close。Dispose和Close都会是平稳执行,就算你没打开也不会有什么问题,或者你连续执行一万次也不会有什么问题。