有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJDBC,MySQL:将位放入位(M!=1)列

我不熟悉使用JDBC+MySQL

我有几个1/0值,我想用PreparedStatement将它们粘贴到数据库中。目标列是一位(M!=1)。我不清楚该使用哪种setXXX方法。我可以很容易地找到哪些数据的引用,但它是如何进入的却让我难以捉摸

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


共 (2) 个答案

  1. # 1 楼答案

    在MySQL中设置BIT(M)

    对于M==1

    setBoolean(int parameterIndex, boolean x)
    

    来自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.


    对于M>1

    JDBC对BIT(M)的支持存在问题,因为BIT(M)只在“完整”SQL-92中需要,只有少数数据库支持

    检查这里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'语法来设置位列的值

  2. # 2 楼答案

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