ADO.Net使用优化
|
源代码网整理以下1.数据库连接打开和关闭。 在需要连接时打开,当访问完数据库要立刻关闭连接. 源代码网整理以下 举例说明,还是看两个代码段: 软件开发网 www.mscto.com 源代码网整理以下 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); 软件开发网 www.mscto.com 源代码网整理以下 for(int i=0;i<1000;i++) //for循环模拟取得数据后的商业逻辑操作 源代码网整理以下 { 源代码网整理以下 Thread.Sleep(1000); 源代码网整理以下 } 软件开发网 www.mscto.com 源代码网整理以下 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); 软件开发网 www.mscto.com 源代码网整理以下 MyConnection.Close(); //关闭连接 源代码网整理以下 for(int i=0;i<1000;i++) ////for循环模拟取得数据后的商业逻辑操作 源代码网整理以下 { 源代码网整理以下 Thread.Sleep(1000); 源代码网整理以下 } 源代码网整理以下 显示II代码比I代码好的多,I中早早占着连接不放,如果用户很多的话,容易出现连接池满情况。严重时出现死机现象. 源代码网整理以下 2.数据库查询 软件开发网 www.mscto.com 源代码网整理以下 I. 直接生成SQL语句。 Sql Server每次都要对其进行编译,在性能方面不会有很大的提高。另外也不够安全。容易被攻击. 软件开发网 www.mscto.com 源代码网整理以下 II. 使用带参数的SQL命令。这种方式Sql Server只对其编译一次,对于不同的参数可以重复使用编译后的命令。提高了性能. 软件开发网 www.mscto.com 源代码网整理以下 III.使用Sql Server存储过程. 编译一次. 具有独立性,便于修改和维护. 一次能完成用语句发送多次的功能.减少了网络的 源代码网整理以下 流量。 并不一定存储过程一定比语句效率要高,如果商业逻辑很复杂的话,有时候用语句比存储过程效率要高. 源代码网推荐 源代码网供稿. |
