zoukankan      html  css  js  c++  java
  • 技术小结

    1.

      default(T) 在泛型编成中如果不限制T类型参数是值类型或引用类型的话 你程序内部可能会出现错误,
    因为值类型不允许NULL.所以default用来获取一个类型的默认值,对于值类型得到new T()  基本得到的都是0;
    对于引用类型会得到Null
    或者你不使用Default关键词,自己通过反射得到T是指类型还是引用类型 然后设置默认值

    例子:/// <summary>
            /// 逆序列化对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="json">Json字符串</param>
            /// <param name="log">如有log传入log对象,没有为null</param>
            /// <returns></returns>
            public static T DeserializeObject<T>(string json,ILog log)
            {
                try
                {
                    T obj = JsonConvert.DeserializeObject<T>(json);
                    return obj;
                }
                catch (Exception ex)
                {
                    if (null != log)
                    {
                        log.Error("DeserializeObject ["+typeof(T).FullName +"] Error",ex );
                    }                
                }
                return default(T);
            }

    2.

    fetch next from @Cur into newtable
    循环从表@cur中取出,并插入新表中


    3.

    存储过程 SET NOCOUNT ON:

    当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

    如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

    4.

    强制类型转换
    cast(column_name as varchar2(20))之类的

    5.

     1.传入的参数,只有验证通过了并且要参数化,不可用sql拼接的参数,才允许进入数据库,目的防止sql注入,减少与数据库的接触,节省资源
     2.从库中查出的数据,只是看有没有数据的,不要转化成dt,要用ExecuteScalar,只读取第一行第一列
     3.在数据库中是什么类型,在定义实体时也要用什么类型,很简单的道理,在与数据库打交道时,很容易被sql注入
     
      注意:uid 数据类型为int
      eg:
                int re = -1;
                //string sql = string.Format("select id from T_Users where id={0} and ISNULL(passport,'')= ISNULL('{1}','') ", uid, passport);
                //DataTable dt = Shove.Database.MSSQL.Select(sql, new Shove.Database.MSSQL.Parameter[0]);
                
                //if (dt != null && dt.Rows.Count > 0) re = Convert.ToInt32(dt.Rows[0]["id"]);
                //return re;
                 
                 
                if (string.IsNullOrEmpty(passport))
                    return re;
                string sql = @"SELECT id FROM t_users WHERE id =@id AND passport=@passport";
                MSSQL.Parameter[] par=new MSSQL.Parameter[]{
                    new MSSQL.Parameter("id",SqlDbType.BigInt,0,ParameterDirection.Input,uid),
                    new MSSQL.Parameter("passport",SqlDbType.NChar,38,ParameterDirection.Input,passport)
                };
                object ret= Shove.Database.MSSQL.ExecuteScalar(sql, par);
                if (ret != null)
                    return Convert.ToInt32(uid);
                else
                    return re;
     
    6.
       要把加log,成为一种习惯,要颠覆之前的只有调试才能找到错误点,学会从log中读取信息找出造成错误的点

  • 相关阅读:
    在过滤器中验证接口中的Token
    导出EXCEL的 两个方法
    调用webservice接口,返回xml(String)转义
    时间类的操作
    jvm 内存解析以及jvm调优
    redis springMVC 配置与应用
    题目2 成绩排序
    题目1 排序
    题目1042:Coincidence
    题目1131:合唱队形
  • 原文地址:https://www.cnblogs.com/zjn0zjn/p/3872671.html
Copyright © 2011-2022 走看看