JDBC,MySQL:将位转换为BIT(M!= 1)列

我是使用JDBC + MySQL的新手。

我有几个1/0值,我想用PreparedStatement粘贴到数据库中。 目标列是BIT(M!= 1)。 我不清楚使用哪种setXXX方法。 我可以很容易地找到数据出来的参考资料,但它是如何进入我的。

这些值有效地作为应用程序使用的对象中有序的布尔集合。 另外,我偶尔会从1/0字符的平面文本文件中导入数据。

在MySQL中设置BIT(M)

对于M==1

 setBoolean(int parameterIndex, boolean x) 

来自javadoc

将指定参数设置为给定的Java布尔值。 驱动程序在将其发送到数据库时将其转换为SQL BIT值。


对于M>1

对于BIT(M)的支持,其中M!=1对于JDBC是有问题的,因为BIT(M)仅需要“完整”SQL-92并且只有少数DB支持它。

在这里检查映射SQL和Java类型:8.3.3 BIT

以下适用于MySQL(至少使用MySQL 5.0.45,Java 1.6和MySQL Connector / J 5.0.8)

 ... PreparedStatement insert = con.prepareStatement( "INSERT INTO bittable (bitcolumn) values (b?)" ); insert.setString(1,"111000"); ... 

这使用MySQL的特殊b’110101010’语法来设置BIT列的值。

您可以将get / setObject与字节数组(byte [])一起使用。 每个字节中包含8位,最低有效位在最后一个数组元素中。