摘要: 很多人都知道SQL注入,也知道SQL参数化查询可以防止SQL注入,可为什么能防止注入却并不是很多人都知道的。本文主要讲述的是这个问题,也许你在部分文章中看到过这块内容,当然了看看也无妨。首先:我们要了解SQL收到一个指令后所做的事情:具体细节可以查看文章:Sql Server 编译、重编译与执行计划重用原理在这里,我简单的表示为:收到指令 -> 编译SQL生成执行计划 ->选择执行计划 ->执行执行计划。具体可能有点不一样,但大致的步骤如上所示。接着我们来分析为什么拼接SQL 字符串会导致SQL注入的风险呢?首先创建一张表Users:CREATE TABLE [dbo].[U 阅读全文
posted @ 2013-09-03 15:51 qanholas 阅读(963) 评论(0) 推荐(0)
摘要: Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示如果还为了这个纠结,就直接看看后面的解说,做决定吧。一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。sql server中的varchar和Nvarchar有什么区别?答:varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。 阅读全文
posted @ 2013-09-03 15:48 qanholas 阅读(29708) 评论(1) 推荐(6)
摘要: 在做项目中,使用了float类型来定义一些列,如:Price,但是发现了很多问题1、当值的位数大于6位是float型再转varchar型的时候会变为科学技术法显示 此时只好将float型转换成numeric型,再转换成varchar2、float型变量在存入值时,有时值得大小会发生改变。这个现象发生在对报价保存时,如:保存一个3.8,但到了数据库中变成了3.80001124或3.79998999等在SqlServer的帮助中是这样描述float类型的:用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。所以今后这个类型一定要慎用评论#1楼218 阅读全文
posted @ 2013-09-03 12:02 qanholas 阅读(7254) 评论(0) 推荐(0)