JDBC,MySQL:将位转换为BIT(M!= 1)列
-
05-07-2019 - |
题
我是使用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支持。
以下适用于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位,最低有效位在最后一个数组元素中。
不隶属于 StackOverflow