现在的位置: 首页 > 综合 > 正文

ADO.Net使用方面优化

2013年09月08日 ⁄ 综合 ⁄ 共 1591字 ⁄ 字号 评论关闭

 

1.数据库连接打开和关闭。 在需要连接时打开,当访问完数据库要立刻关闭连接.

       举例说明,还是看两个代码段:

      I.

           DataSet ds = new DataSet();

           SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind");

           SqlCommand myCommand = new SqlCommand(strSql,MyConnection);  

           SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr);

        MyConnection.Open();      //打开连接

        for(int i=0;i<1000;i++)   //for循环模拟取得数据前的商业逻辑操作

         {

            Thread.Sleep(1000);

       }

       myAdapter.Fill(ds);

        for(int i=0;i<1000;i++)   //for循环模拟取得数据后的商业逻辑操作

        {

           Thread.Sleep(1000);

        }

        MyConnection.Close();     //关闭连接

        II.

           DataSet ds = new DataSet();

           SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind");

           SqlCommand myCommand = new SqlCommand(strSql,MyConnection);  

           SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr);       

         for(int i=0;i<1000;i++)   //for循环模拟取得数据前的商业逻辑操作

         {

            Thread.Sleep(1000);

       }

       MyConnection.Open();      //打开连接

           myAdapter.Fill(ds);

          MyConnection.Close();     //关闭连接

        for(int i=0;i<1000;i++)   ////for循环模拟取得数据后的商业逻辑操作

        {

           Thread.Sleep(1000);

        }

         显示II代码比I代码好的多,I中早早占着连接不放,如果用户很多的话,容易出现连接池满情况。严重时出现死机现象.

       2.数据库查询

          I. 直接生成SQL语句。 Sql Server每次都要对其进行编译,在性能方面不会有很大的提高。另外也不够安全。容易被攻击.

          II. 使用带参数的SQL命令。这种方式Sql Server只对其编译一次,对于不同的参数可以重复使用编译后的命令。提高了性能.

          III.使用Sql Server存储过程. 编译一次. 具有独立性,便于修改和维护. 一次能完成用语句发送多次的功能.减少了网络的

              流量。 并不一定存储过程一定比语句效率要高,如果商业逻辑很复杂的话,有时候用语句比存储过程效率要高.

 

抱歉!评论已关闭.