简体   繁体   English

com.mysql.jdbc.MysqlDataTruncation:数据截断:截断了不正确的DOUBLE值:'q'

[英]com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'q'

I'm trying to learn how to work with a database in Java using MySql. 我正在尝试学习如何使用MySql在Java中使用数据库。 I'm having this error: 我遇到这个错误:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'q' com.mysql.jdbc.MysqlDataTruncation:数据截断:截断了不正确的DOUBLE值:'q'

which means I'm having type mismatch but I can't figure out why. 这意味着我的类型不匹配,但我不知道为什么。 Here is my code. 这是我的代码。 I have included ResultSetMetaData to show the datatypes of columns. 我已包含ResultSetMetaData来显示列的数据类型。

import java.sql.*;

public class Prep {
public static void main(String[] args) throws SQLException {

    try {

        Connection c=DriverManager.getConnection(host, username, password);

        PreparedStatement pstmt=c.prepareStatement("update emp2211 set name=? where id=?");

        ResultSet rs = pstmt.executeQuery("Select * from emp2211");
        ResultSetMetaData rsmd= rs.getMetaData();  

        System.out.println("Total columns: "+rsmd.getColumnCount());  
        System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));  
        System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));
        System.out.println("Column Name of 2nd column: "+rsmd.getColumnName(2));  
        System.out.println("Column Type Name of 2nd column: "+rsmd.getColumnTypeName(2));

        pstmt.setInt(1, 800);
        pstmt.setString(2, "q");

        pstmt.executeUpdate();

        while(rs.next()){
            System.out.println(rs.getString(1));
            System.out.println(rs.getString(2));
        }
        pstmt.close();
        c.close();

    } catch (Exception e) {         
        System.out.println(e);
    }


}
}

This is my output 这是我的输出

Total columns: 2
Column Name of 1st column: id
Column Type Name of 1st column: INT
Column Name of 2nd column: name
Column Type Name of 2nd column: VARCHAR
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'q'

You are setting a String to an numeric column. 您正在将String设置为数字列。

PreparedStatement pstmt=c.prepareStatement("update emp2211 set name=? where id=?");
...
pstmt.setInt(1, 800);       
pstmt.setString(2, "q");    // the second ? is referred to id 

Probably you need to the following? 可能您需要执行以下操作?

PreparedStatement pstmt=c.prepareStatement("update emp2211 set name=? where id=?");
...
pstmt.setString(1, "q");       
pstmt.setInt(2, 800);       

try this code 试试这个代码

  import java.sql.*;

public class Prep {
public static void main(String[] args) throws SQLException {

    try {

        Connection c=DriverManager.getConnection(host, username, password);

        PreparedStatement pstmt=c.prepareStatement("update emp2211 set name=? where id=?");

        ResultSet rs = pstmt.executeQuery("Select * from emp2211");
        ResultSetMetaData rsmd= rs.getMetaData();  

        System.out.println("Total columns: "+rsmd.getColumnCount());  
        System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));  
        System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));
        System.out.println("Column Name of 2nd column: "+rsmd.getColumnName(2));  
        System.out.println("Column Type Name of 2nd column: "+rsmd.getColumnTypeName(2));

        //this is your error
        pstmt.setString(1, "q");
        pstmt.setInt(2, 800);
        pstmt.executeUpdate();

        while(rs.next()){
            System.out.println(rs.getString(1));
            System.out.println(rs.getString(2));
        }
        pstmt.close();
        c.close();

    } catch (Exception e) {         
        System.out.println(e);
    }


}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 com.mysql.jdbc.MysqlDataTruncation:数据截断:截断了不正确的DOUBLE值:',3' - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: ',3' 错误:com.mysql.jdbc.MysqlDataTruncation:数据截断:截断了不正确的DOUBLE值:通过删除 - Error:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: by Delete com.mysql.jdbc.MysqlDataTruncation:数据截断:日期值不正确 - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value com.mysql.jdbc.MysqlDataTruncation:数据截断:不正确的日期时间值:'' - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ' ' 为什么会出现“ com.mysql.jdbc.MysqlDataTruncation:数据截断:不正确的datetime值:”错误? - Why do I get a “com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value:” error? com.mysql.jdbc.MysqlDataTruncation:数据截断:错误的日期时间值:第1行的'lastchange'列的'0000-00-00 00:00:00' - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '0000-00-00 00:00:00' for column 'lastchange' at row 1 “ com.mysql.jdbc.MysqlDataTruncation:数据截断:超出范围值”,按位“或” - “com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value” with bitwise 'OR' com.mysql.jdbc.MysqlDataTruncation:数据截断:错误的日期时间值:第1行“ INVOICE_DATE”列的“ Mon Feb 11 00:00:00 IST 2013” - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: 'Mon Feb 11 00:00:00 IST 2013' for column 'INVOICE_DATE' at row 1 com.mysql.jdbc.MysqlDataTruncation:数据截断:第1行的列'DATE'的数据太长 - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'DATE' at row 1 com.mysql.jdbc.MysqlDataTruncation:数据截断:数据太长以至于列“名称” - com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM