Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有setString的Java查询无法插入位类型_Java_Mysql_Bit_Setstring - Fatal编程技术网

具有setString的Java查询无法插入位类型

具有setString的Java查询无法插入位类型,java,mysql,bit,setstring,Java,Mysql,Bit,Setstring,问题就在这里 我使用的是Netbeans和MySQL的最新版本 我在MySQL中使用位(1)字段类型来管理我的应用程序中的布尔类型 当我在数据库中存储数据时,如果我使用这段代码,一切都很好 PreparedStatement st = con.prepareStatement("INSERT INTO `postetransfo`.`utilisateur`" + " (`dbLogin`, `dbMDP`, `dbNom`, `dbPrenom`, `dbAjP

问题就在这里 我使用的是Netbeans和MySQL的最新版本 我在MySQL中使用位(1)字段类型来管理我的应用程序中的布尔类型

当我在数据库中存储数据时,如果我使用这段代码,一切都很好

PreparedStatement st = con.prepareStatement("INSERT INTO `postetransfo`.`utilisateur`"
                + " (`dbLogin`, `dbMDP`, `dbNom`, `dbPrenom`, `dbAjPoste`, `dbModPoste`, `dbMajPoste`, `dbAjMesure`,"
                + " `dbModMesure`, `dbDroitAdmin`, `dbTracerAdmin`) VALUES (?,?,?,?,b'0',b'0',b'0',b'0',b'0',b'0',?)");

        st.setString(1, login);
        st.setString(2, "changemoi");
        st.setString(3, nom);
        st.setString(4, prenom);
        //st.setString(5, "b'0'");
        //st.setString(5, "b'0'");
       // st.setString(6, "b'0'");
       // st.setString(7, "b'0'");
       // st.setString(8, "b'0'");
       // st.setString(9, "b'0'");
        st.setString(5, "TEST");
但是当我想使所有查询都动态时,我得到了以下异常

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'dbAjPoste' at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)

对于位参数,您应该使用
setBoolean
而不是
setString

数据截断:第1行“dbAjPoste”列的数据太长意味着您希望存储的值大于DB中的大小

**

  • 范例
**

第一个冒号类型Varchar2(5),但您希望插入字符串值,如“abcdefghij”。 字符串的长度为10,但以DB为单位,最多只能使用5


希望它对您有用。

似乎您试图放入字段
dbAjPoste
的数据与架构中实际数据类型的大小不匹配。您可以尝试使用st.setBoolean()-但我不确定它是否有效