jdbc - "data exception: string data, right truncation"on INSERT with prepared statement

标签 jdbc parameters prepared-statement ucanaccess

在这段代码中尝试使用参数执行 preparedStatement 时

public void Insert(String TreeType, String LastWatered, String PlantDate) {
    try {
        String G = "INSERT INTO Trees (TreeType, LastWatered, PlantDate) VALUES 
(?, ?, ?)";
        PreparedStatement preparedStatement = conn.prepareStatement(G);
        preparedStatement.setString(1, TreeType);
        preparedStatement.setString(2, LastWatered);
        preparedStatement.setString(3, PlantDate);
        preparedStatement.executeUpdate();
    } catch (SQLException ex) {
        Logger.getLogger(TreeArr.class.getName()).log(Level.SEVERE, null, ex);
    }

}

我收到这个错误

    Sep 09, 2018 2:15:51 AM pat.ConnectDb Insert
    SEVERE: null
    net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.4 data exception: 
    string data, right truncation;  table: TREES column: TREETYPE
    at 
net.ucanaccess.jdbc.UcanaccessPreparedStatement.executeUpdate(UcanaccessPreparedStatement.java:269)
    at pat.ConnectDb.Insert(ConnectDb.java:41)
    at pat.AddTreeGUI.GoButton1ActionPerformed(AddTreeGUI.java:218)
    at pat.AddTreeGUI.access$100(AddTreeGUI.java:13)
    at pat.AddTreeGUI$2.actionPerformed(AddTreeGUI.java:67)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
     ...
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation;  table: TREES column: TREETYPE
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.Table.enforceTypeLimits(Unknown Source)
    at org.hsqldb.Table.insertSingleRow(Unknown Source)
    at org.hsqldb.StatementDML.insertSingleRow(Unknown Source)
    at org.hsqldb.StatementInsert.getResult(Unknown Source)
    at org.hsqldb.StatementDMQL.execute(Unknown Source)
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
    at org.hsqldb.Session.execute(Unknown Source)
    ... 46 more
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.types.CharacterType.convertToTypeLimits(Unknown Source)
    ... 53 more

但是,当我输入一个真实的字符串时它会起作用,例如

preparedStatement.setString(1, "Hello World");

如何做到这一点?

最佳答案

data exception: string data, right truncation; table: TREES column: TREETYPE

错误消息告诉您 Java 变量 TreeType 中的字符串值比列 TreeType 中定义的字符串的最大允许长度长 表。您要么必须使该列更宽,要么使您的字符串更短。

关于jdbc - "data exception: string data, right truncation"on INSERT with prepared statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240430/

相关文章:

sql - 在grails准备好的语句上使用like时引发异常

mysql - 从 where 子句中删除参数以显示记录

java - SQLite内存不足异常

python - Python 中默认参数的范围

asp.net :how to use eventargs for parameter passing on button onclick?

c# - 在代码隐藏中设置SqlDataSource的插入参数值

java - Python 相当于 Java 的 statement.getGeneratedKeys()?

sql - ORA-14763 : Unable to resolve FOR VALUES clause to a partition number

mysql - 数据流 Mysql 到 Bigquery : Connection refused

JavaPreparedStatement带外键的多批量插入