JDBC, MySQL: getting bits into a BIT(M!=1) column

前端 未结 2 1916
广开言路
广开言路 2020-12-21 22:46

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\

2条回答
  •  佛祖请我去吃肉
    2020-12-21 23:21

    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.

提交回复
热议问题