Java 整数值不正确:'';对于列';编号';在第1行-JDBC

Java 整数值不正确:'';对于列';编号';在第1行-JDBC,java,mysql,jdbc,insert,Java,Mysql,Jdbc,Insert,当我尝试插入这些值时,我一直会遇到此错误。以前包含此错误的帖子对我没有帮助。我有其他类/db具有相同的查询,但有3个值(varchar、varchar、int),它们可以工作。这是我的疑问: String sql = ("INSERT INTO `PlayerTable`(`Name`, `Lastname`, `Number`, `Points`, `Assists`, `Rebounds`) VALUES (?,?,?,?,?,?)"); PreparedStatement

当我尝试插入这些值时,我一直会遇到此错误。以前包含此错误的帖子对我没有帮助。我有其他类/db具有相同的查询,但有3个值(varchar、varchar、int),它们可以工作。这是我的疑问:

String sql = ("INSERT INTO `PlayerTable`(`Name`, `Lastname`, `Number`, `Points`, `Assists`, `Rebounds`) VALUES (?,?,?,?,?,?)");
        PreparedStatement ps = PlayerBase.get().prepareStatement(sql);
        ps.setString(1, playerNameFld.getText());
        ps.setString(2, playerLNFld.getText());
        ps.setString(3, playerNumberFld.getText());
        ps.setString(4, playerPointsFld.getText());
        ps.setString(5, playerAssistsFld.getText());
        ps.setString(6, playerReboundsFld.getText());
        ps.execute(); 
这是我的db类:

public class PlayerBase {

private static Connection connection;

// Pravi konekciju za igraca
private static Connection createConnection() {
    try {
        // Pristupa drajveru u JAR fajlu
        Class.forName("com.mysql.jdbc.Driver");
        return DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/player", "root", "");
    } catch (Exception e) {
        return null;
    }
}

public static Connection get() {
    if (connection == null) {
        connection = createConnection();
    }
    return connection;
}

public static ResultSet query(String sql) {
    try {
        Connection connection = get();
        Statement s = connection.createStatement();
        return s.executeQuery(sql);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

看起来您的数字列需要一些可以解释为数字的内容,但您的playerNumberFld.getText不符合此要求。

这是因为这行代码:

ps.setString(3, playerNumberFld.getText());
您正在调用
setString
而不是
setInt

因此,要修复它,请调用:

ps.setInt(3, Integer.valueOf(playerNumberFld.getText()));

由于两个原因正在生成错误

ps.setString(3,playerNumber fid.getText())

第一个原因 您正在调用setString而不是setInt

第二个原因(可能是)

playerFId.getText()返回字符串值,因此需要转换为int格式
使用Integer.parseInt(…)方法可以添加整个stactrace和表结构吗?为什么要使用
setString()
作为数字?接受什么数据类型的
number
列,用您得到的错误更新您的问题。我按照您的建议做了,现在我得到NumberFormatException:对于输入字符串:“错误”。数字列需要int。这意味着您必须传递一些值。JTextField/TextField中的空值将为您提供NumberFormatException。放置一些过滤器,比如
if(playerNumber fld.getText().trim().length()!=0){…}
是的,我通过验证检查修复了它。谢谢