使用Java连接MySQL数据库时,最佳的boolean实现方式是什么?

8

我目前使用Java客户端访问和使用MySQL数据库。我需要在数据库中有一个布尔数据类型,以确定各种用户是否被允许执行某些操作。由于MySQL中没有布尔数据类型,因此您可以使用哪种最佳的实现方式?

我知道可以使用TinyIntPreparedStatement一起使用setByte(int parameterIndex, byte x),也知道可以使用BitsetBoolean(int parameterIndex, boolean x)一起使用。这两种方法哪种更好用于布尔值?如果有更好的解决方案,它是什么?

2个回答

6

Boolean在MySQL中是TINYINT(1)的同义词;如果位数足够小,Bit也是。从MySQL操作的角度来看,使用哪一个几乎没有区别。你所说的“更好”是什么意思?


当我说更好时,我的意思是在使用 Java 作为客户端时通常更容易实现或使用的哪个? - LOD121
我会使用Y/N解决方案,因为它更易于阅读。 - nomadus
@nomadus - 有什么是肯定或否定的解决方案吗? - Ted Hopp
我更喜欢使用Y或N,而不是0或1。我见过几种情况,其中无法确定0是表示真还是假。当开发人员使用数字来表示布尔变量时,阅读起来很困难。 - nomadus
@nomadus - 是的,我理解。也许一个 ENUM 列可以完成这个任务。它以 TINYINT(1) 的形式存储,并且可读取为字符串值。 - Ted Hopp

1

您似乎认为您不能使用JDBC的setBoolean来处理MySQL的BOOL - 实际上是可以的。因此,最好的选择是将列声明为BOOL并使用setBoolean。即使MySQL将您的声明别名为TINYINT,您的SQL声明了您想要使用的内容,而您的Java代码也在该级别上明确表达了这一点。


@sheldonCooper,我没有检查过,但是从记忆中来看,是的。 - Jon Bright

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接