Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Java ReturnGeneratedKeys为空,尽管批插入成功_Java_Mysql_Mariadb - Fatal编程技术网

Java ReturnGeneratedKeys为空,尽管批插入成功

Java ReturnGeneratedKeys为空,尽管批插入成功,java,mysql,mariadb,Java,Mysql,Mariadb,因此,我最近开始了一个新项目,一直在将数据插入MariaDB表。我过去能够得到生成的关键点,所以这对我来说有点不可靠。正如我在刷新表后看到的那样,正在插入行,但是没有返回生成的键。这是我当前的代码 try (Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("INSERT INTO items (chrid, accoun

因此,我最近开始了一个新项目,一直在将数据插入MariaDB表。我过去能够得到生成的关键点,所以这对我来说有点不可靠。正如我在刷新表后看到的那样,正在插入行,但是没有返回生成的键。这是我当前的代码

    try (Connection con = DatabaseConnection.getConnection();
            PreparedStatement ps = con.prepareStatement("INSERT INTO items (chrid, accountid, type, pos, itemid) VALUES (?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS)) {
            con.setAutoCommit(true);
            ArrayList<Pair<Integer, Equip>> equips = new ArrayList<>();
            for (Pair<Integer, Integer> item : items) {
                equips.add(itemCreationSystem.createEquip(item.right));
                ps.setInt(1, dbId.dbId);
                ps.setInt(2, client.accountId);
                ps.setInt(3, 0);
                ps.setInt(4, item.left);
                ps.setInt(5, item.right);
                ps.addBatch();
            }
            ps.executeBatch();
            try (ResultSet rs = ps.getGeneratedKeys()) {
                try (PreparedStatement ps2 = con.prepareStatement(
                        "INSERT INTO equips (itemKey, slots, successfulUpgrades, str, dex, intel, luk, hp, mp, " +
                                "wAtk, mAtk, wDef, mDef, equipPos)")) {
                    while (rs.next()) {
                        Pair<Integer, Equip> pair = equips.remove(0);
                        Equip equip = pair.right;
                            ps2.setInt(1, rs.getInt(1));
                            ps2.setShort(2, equip.upgradeSlots);
                            ps2.setShort(3, equip.successfulUpgrades);
                            ps2.setShort(4, equip.getProperty("STR"));
                            ps2.setShort(5, equip.getProperty("DEX"));
                            ps2.setShort(6, equip.getProperty("INT"));
                            ps2.setShort(7, equip.getProperty("INT"));
                            ps2.setShort(8, equip.getProperty("HP"));
                            ps2.setShort(9, equip.getProperty("MMP"));
                            ps2.setShort(10, equip.getProperty("PAD"));
                            ps2.setShort(11, equip.getProperty("MAD"));
                            ps2.setShort(12, equip.getProperty("PDD"));
                            ps2.setShort(13, equip.getProperty("MDD"));
                            ps2.setInt(14, pair.left);
                            ps2.addBatch();
                    }
                    ps2.executeBatch();
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
try(Connection con=DatabaseConnection.getConnection();
PreparedStatement ps=con.prepareStatement(“插入项目(chrid、accountid、type、pos、itemid)值(?,,,,?,?)”,语句返回生成的键)){
con.setAutoCommit(真);
ArrayList equips=新的ArrayList();
对于(配对项目:项目){
添加(itemCreationSystem.CreateEquipm(item.right));
ps.setInt(1,dbId.dbId);
ps.setInt(2,客户机.accountId);
ps.setInt(3,0);
ps.setInt(第4项,左侧);
ps.setInt(第5项,右侧);
ps.addBatch();
}
ps.executeBatch();
try(ResultSet rs=ps.getGeneratedKeys()){
try(PreparedStatement ps2=con.PreparedStatement(
插入设备(项目密钥、插槽、成功升级、str、dex、intel、luk、hp、mp、+
“wAtk、mAtk、wDef、mDef、Equipmpos)”){
while(rs.next()){
配对=装备。移除(0);
装备=配对。右侧;
ps2.setInt(1,rs.getInt(1));
ps2.设置短(2个,配备升级槽);
ps2.设置短(3,装备成功升级);
ps2.setShort(4,Equipment.getProperty(“STR”));
ps2.设置短(5,设备属性(“DEX”);
ps2.setShort(6,equipment.getProperty(“INT”);
ps2.setShort(7,equipment.getProperty(“INT”);
ps2.setShort(8,Equipment.getProperty(“HP”));
ps2.setShort(9,Equipment.getProperty(“MMP”);
ps2.设置短(10,设备属性(“PAD”);
ps2.setShort(11,设备和物业(“MAD”));
ps2.setShort(12,Equipment.getProperty(“PDD”);
ps2.setShort(13,设备属性(“MDD”);
ps2.setInt(14,对左);
ps2.addBatch();
}
ps2.executeBatch();
}
}
}捕获(SQLE异常){
e、 printStackTrace();
}

我一直在玩自动提交,但没有得到任何结果。我想可能就是这样,但除非我在那里或在查询之后将其提交为true,否则不会插入任何行。

您能指出此items表的服务器版本、驱动程序版本和DDL吗?items表必须具有自动递增的标识符table具有自动递增且id列为主键。我不知道你说的DDL是什么意思。服务器是10.1.31-MariaDB-源分发。驱动程序版本是1.2.0org.mariadb.jdbc.Oh shoot我对驱动程序版本产生了怀疑,于是去maven更新到最新的jdbc驱动程序。现在可以了!