JDBC、MySQL:将位放入 BIT(M!=1) 列

发布于 2024-08-08 22:42:52 字数 220 浏览 5 评论 0原文

我是使用 JDBC + MySQL 的新手。

我有几个 1/0 值,我想将它们存入带有PreparedStatement 的数据库中。目标列是一个 BIT(M!=1)。我不清楚使用哪种 setXXX 方法。我可以很容易地找到有关数据输出的参考资料,但它是如何输入的却让我困惑。

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

I'm new to using JDBC + MySQL.

I have several 1/0 values which I want to stick into a database with a PreparedStatement. The destination column is a BIT(M!=1). I'm unclear on which of the setXXX methods to use. I can find the references for what data comes out as easily enough, but how it goes in is eluding me.

The values effectively live as an ordered collection of booleans in the objects used by the application. Also, I'll occasionally be importing data from flat text files with 1/0 characters.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿挽旧人 2024-08-15 22:42:52

设置 BIT(M)

在 MySQL 中为 M==1

setBoolean(int parameterIndex, boolean x)

来自 javadoc

将指定参数设置为
给定 Java 布尔值。司机
当以下情况时将其转换为 SQL BIT 值:
它将其发送到数据库。


对于 M>1

BIT(M) 的支持,其中 M!=1 对于 JDBC 作为 BIT(M)< /code> 只有“完整”SQL-92 才需要,并且只有少数数据库支持它。

检查此处映射 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 的值列。

To set a BIT(M) column in MySQL

For M==1

setBoolean(int parameterIndex, boolean x)

From the javadoc

Sets the designated parameter to the
given Java boolean value. The driver
converts this to an SQL BIT value when
it sends it to the database.


For M>1

The support for BIT(M) where M!=1 is problematic with JDBC as BIT(M) is only required with "full" SQL-92 and only few DBs support that.

Check here Mapping SQL and Java Types: 8.3.3 BIT

The following works for me with MySQL (at least with MySQL 5.0.45, Java 1.6 and MySQL Connector/J 5.0.8)

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

This uses the special b'110101010' syntax of MySQL to set the value for BIT columns.

陌若浮生 2024-08-15 22:42:52

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

You can use get/setObject with a byte array (byte[]). 8 bits are packed into each byte with the least significant bit being in the last array element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文