一、方法中使用接口或基类来传递的优点
在方法中传递对象时,尽量使用类的接口或它的基类,而不要使用具体类,因为接口和抽象类更具兼容性,如:
调用端写成
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);
未完待续