关闭

提升DAO.NET性能

5475人阅读 评论(0) 收藏 举报

  

一、方法中使用接口或基类来传递的优点
在方法中传递对象时,尽量使用类的接口或它的基类,而不要使用具体类,因为接口和抽象类更具兼容性,如:
调用端写成List list = new List();MethodA(list);
被调用时端写成void MethodA(IList list);或void MethodA(ICollection list)的样子。
以后当要传递的只要是实现IList或ICollection接口的对象,都可以做为参数传进去,前提是在这个方法里,有些List专用的方法就无法调用了,只能调用它其类或接口中公开的方法。
二、高效率的增加SQL语句查询条件(已知要知道加几个参数版)
    StringBulider sqlSelect1 = new StringBulider(
“select field1, field2 from t where field1 =@field1 ”)
SqlParameter[] Parms = new SqlParameter{/*TODO:add parm*/}
If(field2 != null)
{
    arraySize = parms1.Length;
    sqlSelect1.Append(“and field2 =@field2”);
    Array.Resize<SqlParameter>(ref parms, arraySize+1);
    Parms[arraySize] = new SqlParameter(“@field2”,SqlDbType.VarChar);
    Parms[arraySize].Value = “xxx”;
}
三、高效率的增加SQL语句查询条件(未知要知道加几个参数版)
    Int arraySize;
If(field != null)
{
    arraySize = parms.length;
    sqlSeelect.Append(“and field = @field”);
    Array.Resize<SqlParameter>(ref parms, arraySize+1);
    parms[arraySize] = new SqlParameter(“@field”,SqlDbType.VarChar);
    parms[arraySize].Value = “xxx”;
}
四、高效使用SqlHelper的事务方法:
    SqlConnection conn = new SqlConnection(ConnString);
    Conn.Open();
    SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommited);
    Try{
SqlHepler.ExecuteNonQuery(trans, CommandType.Text, sqlDelete,parms);
        For(int i=0;i<10;i++)
        {   parms2[0].Value = “aaa”;
            SqlHelper.ExecuteNonQuery(
trans,CommandType.Text, sqlInsert, parms2);
}
        trans.Commit();
}catch(Exception e){ trans.Rollback();
 throw new ApplicationException(e.Message)
}finally{ Conn.Close();}
五、遍历DataRead时查询这某字段是否为DBNull的方法:
    While(dr.Read()){
    If(!dr.IsDBNull(0)){dr.GetInt32(0);}}
六、使用ExecuteScalar取ID不出错的方法:
    Int ID = 0;
    Int.TryParse(SqlCommand.ExecuteScalar(
conn, CommandType.Text, sqlInsert, parms).ToString(), out ID);
    return ID;
七、使用ExecuteScalar来取Count(field)的SQL语句时直接进行显示转换可提高性能:
    Total = (int)SqlCommand.ExecuteScalar(
SqlConneciton, CommandType.Text, sqlSelect,parms);
 
未完待续
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:163162次
    • 积分:2119
    • 等级:
    • 排名:第18628名
    • 原创:37篇
    • 转载:14篇
    • 译文:4篇
    • 评论:10条
    最新评论