http://www.cnblogs.com/abllyboy/archive/2010/11/11/1875122.html

http://archive.cnblogs.com/a/2264294/

       

sql server的tinyint类型与.net中的谁对应,sql server的tinyint类型的DataReader方法,

今天将数据库一个字段由int改为了tinyint类型,model层对应属性由int改为short,没错吧?!
数据库访问层的SqlDataReader.Read()方法也得改呀,原来是:
model.属性 = oReader.IsDBNull(40) ? 0 : oReader.GetInt32(40);

改为tinyint类型后改为:
model.属性 = oReader.IsDBNull(40) ? 0 : oReader.GetInt16(40);

出错啦!:
指定的转换无效。
异常详细信息: System.InvalidCastException: 指定的转换无效。

晕乎!GetInt16返回的是short类型呀?!google一下:
You want to use GetByte() for a TinyInt value.

改吧!
.NET中C#的byte关键字映射.NET的Byte 结构:表示一个 8 位无符号整数。Byte 值类型表示值介于 0 和 255 之间的无符号整数。
.NET中C#的short关键字映射.NET中的Int16:有符号 16 位整数,-32,768 到 32,767。
SQL SERVER中的tinyint从 0 到 255 的整型数据。存储大小为 1 字节。

原来如此,SQL Server中的tinyint与.Net中的Byte结构或C#中的byte才是门当户对的一对

posted on 2012-07-04 17:52  higirle  阅读(1829)  评论(0编辑  收藏  举报