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

时间:2009-10-21 16:01:01

标签: java mysql jdbc prepared-statement

我是使用JDBC + MySQL的新手。

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

在MySQL中设置BIT(M)

M==1

setBoolean(int parameterIndex, boolean x)

来自javadoc

  

将指定参数设置为   给定Java布尔值。司机   将此转换为SQL BIT值   它将它发送到数据库。


M>1

支持BIT(M) M!=1只有BIT(M)的问题只需要“完整”的SQL-92,只有少数DB支持。{/ p>

点击此处Mapping SQL and Java Types: 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列的值。