0

这是我正在使用 Netbeans 和 MySQL 最新版本的问题 我在 MySQL 中使用 BIT(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)
4

2 回答 2

0

您应该使用setBoolean而不是setString用于 BIT 参数。

于 2013-05-08T11:42:54.383 回答
0

数据截断:第 1 行的“dbAjPoste”列的数据太长意味着您想要存储比 DB 中存在的大小更多的值。

**

  • 例子

**

第一列类型 Varchar2(5) 但您想插入字符串值,如“abcdefghij”。字符串的长度为 10,但在 DB 中最多只能为 5。

希望对你有用。。

于 2013-05-08T11:43:32.310 回答