在mysql中如果设置字段为Tinyint类型,补0为1的话,比如:Tinyint(1) 这个不管在数据库中保存1,2,3,4的时候。在java或者c#获取表的对象,转换成类对象的时候,会变成boolean /bool 值类型。
如果想要保存具体的数字那么就用Tinyint(4) 就可以保存数据。
在c#的有些框架,比如EF会把Tinyint(4)转换成Sbyte类型。其实长度也是-128到127
也就是网络上的一些网友提出的解决方案:
Tinyint(1) 就只用来保存 bool 值 只有0和1 不要保存其他的值
如果要保存多的值,就用 Tinyint(4) 这样的,那么到了Ef中这个 类型会变成 sbyte ,这个就是一个整形 .
这个是摘自官方的mysql关于tinyint的说法:

如果你的数据库已经建立好了,并且 有很多的话。正好语言是java的话,可以在jdbc连接串上添加参数:
jdbc://mysql://127.0.0.1/数据库名?tinyInt1isBit=false
就可以了。如果数据库中的表不多的话可以直接把Tinyint(1)改成Tinyint(4).

本文深入探讨了MySQL中Tinyint类型的使用技巧,特别是Tinyint(1)与Tinyint(4)的区别,及其在Java和C#中的映射。揭示了Tinyint(1)如何被误认为布尔类型,而Tinyint(4)则能存储更多数值,甚至在某些框架下转换为Sbyte类型。

8183

被折叠的 条评论
为什么被折叠?



