码迷,mamicode.com
首页 > 其他好文 > 详细

技术小结

时间:2014-07-28 14:49:03      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:des   使用   数据   io   for   cti   ar   new   

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中读取信息找出造成错误的点

技术小结,布布扣,bubuko.com

技术小结

标签:des   使用   数据   io   for   cti   ar   new   

原文地址:http://www.cnblogs.com/zjn0zjn/p/3872671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!